コード例 #1
0
ファイル: Journal.cs プロジェクト: fluorites/utilities
            /// <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);
            }
コード例 #2
0
ファイル: Journal.cs プロジェクト: fluorites/utilities
            /// <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;
                // Преобразование типа сообщения.
                string c_sType = "Unknown";

                switch (x_ulType)
                {
                case MessageTypeEnum.ERROR_MESSAGE:
                    c_sType = "Error";
                    break;

                case MessageTypeEnum.WARNING_MESSAGE:
                    c_sType = "Warning";
                    break;

                case MessageTypeEnum.INFORMATION_MESSAGE:
                    c_sType = "Information";
                    break;
                }
                try {
                    // Создание файла базы данных, если он не существует.
                    if (!File.Exists(m_sFileName))
                    {
                        (new SqlCeEngine(String.Format("Data Source='{0}'", m_sFileName))).CreateDatabase();
                        // Создание таблицы для сообщений.
                        using (SqlCeConnection c_cnSqlceJournal = new SqlCeConnection(String.Format("Data Source='{0}'", m_sFileName))) {
                            c_cnSqlceJournal.Open();
                            // Формирование и выполнение запроса на создание таблицы.
                            SqlCeCommand c_cmCreate = new SqlCeCommand(
                                String.Format(n_sTemplate_CreateTable, m_sTableName),
                                c_cnSqlceJournal);
                            c_cmCreate.ExecuteNonQuery();
                        }
                    }
                    using (SqlCeConnection c_cnSqlceJournal = new SqlCeConnection(String.Format("Data Source='{0}'", m_sFileName))){
                        c_cnSqlceJournal.Open();
                        // Формирование строки запроса.
                        string c_sBuffer = "";
                        if (x_ulForm == MessageFormEnum.RELEASE_MESSAGE)
                        {
                            c_sBuffer = String.Format(n_sTemplate_InsertMessage,
                                                      m_sTableName,
                                                      x_sSource,
                                                      c_sType,
                                                      x_sCategory,
                                                      x_sDescription.Replace("'", "''"),
                                                      Environment.UserName,
                                                      Environment.MachineName);
                        }
                        else
                        {
                            c_sBuffer = String.Format(n_sTemplate_InsertDebug,
                                                      m_sTableName,
                                                      x_sSource,
                                                      c_sType,
                                                      x_sCategory,
                                                      x_sDescription.Replace("'", "''"),
                                                      Environment.UserName,
                                                      Environment.MachineName,
                                                      Thread.CurrentThread.ManagedThreadId,
                                                      CFormat.GetCaller(new StackFrame(2, true)));
                        }
                        // Формирование и выполнение запроса на добавление сообщения.
                        SqlCeCommand c_cmInsert = new SqlCeCommand(c_sBuffer, c_cnSqlceJournal);
                        if (c_cmInsert.ExecuteNonQuery() == 0)
                        {
                            c_bSucceeded = false;
                        }
                    }
                }
                catch {
                    c_bSucceeded = false;
                }

                return(c_bSucceeded);
            }
コード例 #3
0
ファイル: Journal.cs プロジェクト: fluorites/utilities
            /// <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_sType = "Unknown";

                switch (x_ulType)
                {
                case MessageTypeEnum.ERROR_MESSAGE:
                    c_sType = "Error";
                    break;

                case MessageTypeEnum.WARNING_MESSAGE:
                    c_sType = "Warning";
                    break;

                case MessageTypeEnum.INFORMATION_MESSAGE:
                    c_sType = "Information";
                    break;
                }
                XmlDocument c_xdXmlJournal = new XmlDocument();

                try {
                    // Создание файла, если он не существует.
                    if (!File.Exists(m_sFileName))
                    {
                        c_xdXmlJournal.LoadXml(n_sTemplate_EmptyJournal);
                        c_xdXmlJournal.Save(m_sFileName);
                    }
                    // Открытие файла.
                    c_xdXmlJournal.Load(m_sFileName);
                    // Добавление нового сообщения в XML документ.
                    if (x_ulForm == MessageFormEnum.RELEASE_MESSAGE)
                    {
                        CXml.AddElement(
                            c_xdXmlJournal.SelectSingleNode(n_sTemplate_JournalNode),
                            "message",
                            ElementTypeEnum.ATTRIBUTE_ELEMENT,
                            "date", String.Format("{0:d2}.{1:d2}.{2:d4}", c_dtCurrentTime.Day, c_dtCurrentTime.Month, c_dtCurrentTime.Year),
                            "time", String.Format("{0:d2}:{1:d2}:{2:d2}.{3:d3}", c_dtCurrentTime.Hour, c_dtCurrentTime.Minute, c_dtCurrentTime.Second, c_dtCurrentTime.Millisecond),
                            "source", x_sSource,
                            "type", c_sType,
                            "category", x_sCategory,
                            "description", x_sDescription,
                            "user", Environment.UserName,
                            "computer", Environment.MachineName);
                    }
                    else
                    {
                        CXml.AddElement(
                            c_xdXmlJournal.SelectSingleNode(n_sTemplate_JournalNode),
                            "message",
                            ElementTypeEnum.ATTRIBUTE_ELEMENT,
                            "date", String.Format("{0:d2}.{1:d2}.{2:d4}", c_dtCurrentTime.Day, c_dtCurrentTime.Month, c_dtCurrentTime.Year),
                            "time", String.Format("{0:d2}:{1:d2}:{2:d2}.{3:d3}", c_dtCurrentTime.Hour, c_dtCurrentTime.Minute, c_dtCurrentTime.Second, c_dtCurrentTime.Millisecond),
                            "source", x_sSource,
                            "type", c_sType,
                            "category", x_sCategory,
                            "description", x_sDescription,
                            "user", Environment.UserName,
                            "computer", Environment.MachineName,
                            "thread", Thread.CurrentThread.ManagedThreadId.ToString(),
                            "writer", CFormat.GetCaller(new StackFrame(2, true)));
                    }
                    // Сохранение файла.
                    c_xdXmlJournal.Save(m_sFileName);
                }
                catch {
                    c_bSucceeded = false;
                }

                return(c_bSucceeded);
            }