/// <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); }