Простой регистратор событий в C#
Обычно отладчик позволяет вам изучить, как работает программа достаточно эффективно, но иногда полезно использовать регистратор событий для записи событий для последующего изучения. Например, когда вы работаете с событиями мыши, остановка выполнения в точке прерывания часто испортит последовательность событий, которые программа пытается отслеживать. В этом случае вам может потребоваться записать информацию о событии в файл и посмотреть на нее позже.
В этом примере используется следующий простой класс журнала событий для записи текстовых сообщений в файл.
public static class Logger { // Вычислить имя файла журнала. private static string LogFile = Environment.GetFolderPath( Environment.SpecialFolder.Desktop) + "\\Log.txt"; // Записываем текущую дату и время плюс // строка текста в файл журнала. public static void WriteLine(string txt) { File.AppendAllText(LogFile, DateTime.Now.ToString() + ": " + txt + "\n"); } // Удалите файл журнала. public static void DeleteLog() { File.Delete(LogFile); } }
Класс журнала событий и его методы объявлены static, поэтому основная программа может использовать свои методы без создания экземпляра класса, так же, как вы можете использовать Console и Отладка.
Класс начинается с определения строки , которая содержит имя файла журнала. В этом примере указан файл Log.txt и используется метод GetFolderPath класса > и перечисление SpecialFolder, чтобы поместить файл на рабочем столе текущего пользователя.
В методе WriteLine класса используется File.AppendAllText, чтобы добавить текущее время и строку сообщения в файл журнала.
Метод DeleteLog удаляет файл журнала, чтобы программа могла запустить новый.
В следующем коде показана основная программа, которая демонстрирует класс журнала событий.
// Начнем с нового файла журнала. private void Form1_Load(object sender, EventArgs e) { Logger.DeleteLog(); } // Запись событий MouseEnter и MouseLeave. private void picVolleyball_MouseEnter(object sender, EventArgs e) { Logger.WriteLine("MouseEnter"); } private void picVolleyball_MouseLeave(object sender, EventArgs e) { Logger.WriteLine("MouseLeave"); }
Когда форма загружается, программа использует метод DeleteLog для удаления существующего файла журнала и запуска нового.
В этом примере регистрируются события MouseEnter и MouseLeave, когда мышь перемещается по picVolleyball PictureBox. Он просто записывает сообщение в журнал, указывающее, какое событие было запущено.
В этом примере можно настроить несколько настроек. Вы можете поместить файл журнала в другие места, кроме рабочего стола. Вы могли бы дать файлу другое имя или позволить программе установить имя во время выполнения, чтобы разные программы могли иметь свои собственные файлы журналов. Вы даже можете сделать класс Logger нестационарным, чтобы программа могла использовать более одного объекта Logger для записи в несколько файлов журнала. Вы также можете изменить формат даты и времени, записанных в файл. Например, этот пример записывает дату и время в минуту. Если вы отслеживаете события, которые происходят очень близко друг к другу, вы можете отображать только время и это на 10-й секунде.
Однако простой пример, показанный здесь, достаточно хорош для большинства ситуаций отладки.