Базы данных, текстовые файлы, XML-файлы и т. д. могут использоваться для записи журналов работы приложения. Здесь я представляю использование файлов XML для записи журналов операций.
Я считаю, что использование XML для записи журналов операций имеет следующие преимущества:
1. Он не занимает место в базе данных и может по желанию удалять журналы исторических операций.
2. DataTable может легко читать файлы XML, а DataTable также можно легко сохранять в виде файлов XML.
3. Удобно просматривать журнал. Вы можете напрямую открыть XML-файл для его просмотра или прочитать его в DataTable, а затем просмотреть через программу.
Метод использования XML-файлов для записи журналов операций в VS2005 заключается в следующем:
1. Создайте набор данных: JobLogDataSet.xsd.
Сюда входят 6 полей: TraceLevel (тип журнала), User (пользователь), DateTime (время работы), Module (модуль), Function (функция) и Message (сообщение).
Если этого недостаточно, добавьте его самостоятельно. TraceLevel (тип журнала) относится к Info, Warning, Error, Trance и Off.
2. Создайте тип журнала /// <summary>
/// Тип журнала
/// </сводка>
общедоступное перечисление LogType
{
/// <сводка>
/// информация
/// </сводка>
Информация,
/// <сводка>
/// предупреждать
/// </сводка>
Предупреждение,
/// <сводка>
/// ошибка
/// </сводка>
Ошибка,
/// <сводка>
/// Отслеживание
/// </сводка>
След,
/// <сводка>
/// Нет логирования
/// </сводка>
Выключенный
}
2. Как написать лог
/// <сводка>
/// Запись журнала
/// </сводка>
/// <param name="traceLevel">Тип журнала (Информация, Предупреждение, Ошибка, Транс, Выкл.)</param>
/// <param name="user">Пользователь</param>
/// <param name="module">Модуль</param>
/// <param name="function">Функция</param>
/// <param name="message">Сообщение</param>
public static void WriteLog(LogType logType, строковый пользователь, строковый модуль, строковая функция, строковое сообщение)
{
пытаться
{
// Тип LogType.Off не записывает логи
если (тип_журнала ==Тип_журнала.Выкл.)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable()
// Один файл журнала (файл .XML) каждый день, имя файла журнала: JobLog yyyy-MM-dd.xml;
строка jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +
DateTime.Today.ToString("гггг-ММ-дд") + ".xml";
если (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// Чтение журналов из файла .XML;
t.ReadXml(jobLogFile);
//Добавляем журнал;
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
р.Пользователь = пользователь;
г.Датавремя = ДатаВремя.Сейчас;
р.Модуль = модуль;
р.Функция = функция;
р.Сообщение = сообщение;
t.AddJobLogRow(r);
// Сохраняем журнал в XML-файл
t.WriteXml(jobLogFile);
}
улов (исключение)
{}
}
3. Как читать логи
/// <сводка>
/// Чтение журнала
/// </сводка>
/// <returns>Возвращает DataTable для чтения журнала</returns>
общедоступный статический JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = новый JobLogDataSet.JobLogDataTable();
пытаться
{
// Получаем все файлы журналов JobLog*.xml из папки приложения
string[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly //
Считываем каждую запись журнала в журнал DataTable
);
foreach (строка jobLogFile в jobLogFiles)
{
если (File.Exists(jobLogFile))
{
//Читаем все файлы журналов во временную таблицу данных
JobLogDataSet.JobLogDataTable t = новый JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
//Импортируем записи журнала в основной журнал DataTable
foreach (JobLogDataSet.JobLogRow r в t)
jobLogDataTable.ImportRow(r);
}
}
// Возвращаем журнал чтения DataTable
вернуть jobLogDataTable;
}
улов (исключение)
{
вернуть jobLogDataTable;
}
}
4. Везде, где вам нужно записать журнал, просто вызовите метод WriteLog напрямую.