Ejemplo n.º 1
0
            /// <summary>Запись сообщения.</summary>
            /// <param name="x_sSource">имя источника сообщения.</param>>
            /// <param name="x_ulType">тип сообщения.</param>>
            /// <param name="x_ulForm">вид сообщения.</param>>
            /// <param name="x_sCategory">категория сообщения.</param>>
            /// <param name="x_sDescription">текст сообщения.</param>>
            /// <returns>True, если при  записи сообщения не возникли ошибки.</returns>>
            protected override bool WritingMessage(
                string x_sSource,
                MessageTypeEnum x_ulType,
                MessageFormEnum x_ulForm,
                string x_sCategory,
                string x_sDescription)
            {
                bool c_bSucceeded = true;
                // Текущие дата и время.
                DateTime c_dtCurrentTime = DateTime.Now;
                // Формирование строки с именем папки журнала сообщений.
                string c_sFolderName = String.Format(
                    n_sTemplate_MessageFolder,
                    m_sFolderName,
                    c_dtCurrentTime.Year,
                    c_dtCurrentTime.Month,
                    CFormat.GetMonth(c_dtCurrentTime.Month),
                    c_dtCurrentTime.Day);
                // Формирование строки с расширением файла журнала сообщений.
                string c_sFileExtension = "";

                switch (x_ulType)
                {
                case MessageTypeEnum.ERROR_MESSAGE:
                    c_sFileExtension = "err";
                    break;

                case MessageTypeEnum.WARNING_MESSAGE:
                    c_sFileExtension = "wrn";
                    break;

                case MessageTypeEnum.INFORMATION_MESSAGE:
                    c_sFileExtension = "inf";
                    break;
                }
                // Формирование строки с именем файла журнала сообщений.
                string c_sFileName = String.Format(
                    n_sTemplate_MessageFile,
                    c_sFolderName,
                    x_sSource,
                    c_sFileExtension);

                try {
                    // Создание папки, если она не существует.
                    if (!Directory.Exists(c_sFolderName))
                    {
                        Directory.CreateDirectory(c_sFolderName);
                    }
                    using (StreamWriter c_swTextJournal = new StreamWriter(new FileStream(c_sFileName, FileMode.Append, FileAccess.Write, FileShare.Read))) {
                        // Формирование строки сообщения.
                        string c_sBuffer = "";
                        if (x_ulForm == MessageFormEnum.RELEASE_MESSAGE)
                        {
                            c_sBuffer = String.Format(
                                n_sTemplate_ReleaseLine,
                                c_dtCurrentTime.Hour,
                                c_dtCurrentTime.Minute,
                                c_dtCurrentTime.Second,
                                c_dtCurrentTime.Millisecond,
                                x_sCategory,
                                x_sDescription);
                        }
                        else
                        {
                            c_sBuffer = String.Format(
                                n_sTemplate_DebugLine,
                                c_dtCurrentTime.Hour,
                                c_dtCurrentTime.Minute,
                                c_dtCurrentTime.Second,
                                c_dtCurrentTime.Millisecond,
                                x_sCategory,
                                x_sDescription,
                                Thread.CurrentThread.ManagedThreadId,
                                CFormat.GetCaller(new StackFrame(2, true)));
                        }
                        // Запись в файл сообщения.
                        c_swTextJournal.Write(c_sBuffer);
                    }
                }
                catch {
                    c_bSucceeded = false;
                }

                return(c_bSucceeded);
            }