0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Пример ведения лога с использованием NLog


Воодушевленный этим постом опубликую и свой опыт, касающийся логгирования.
Использую NLog, потому что проект находится в разработке в отличии от более популярного log4net (хотя его может и возобновят..Уж очень он известен). Собственно чтоб начать вести журналы-достаточно создать конфигурационный файл:

Config

(который будет кочевать из проекта в проект) и сделать так, чтоб он всегда копировался в папку с проектом:

Copy Always

Далее можно его настраивать и настраивать

Например, мне критичны исключения, так что моя конфигурация выглядит так:

<!--?xml version="1.0" encoding="utf-8" ?-->















И далее в специальном статическом классе исключений(CustomException) добавить объявление объекта логгера и вызвать метод записи исключения в лог примерно так:

Logger logger = NLog.LogManager.GetCurrentClassLogger();

// To show smth to user
public static void WriteExceptionToLogFile(System.Exception ex)
{
#if DEBUG
System.Diagnostics.Process.Start(ErrorFileName);
#else
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif
}

После чего в коде вызывать в блоке catch:

CustomException.logger.ErrorException("whatever", ex); // from this we get everything about the class/method where the exception occured
CustomException.ExceptionLogCustomMessage(); // if we want to show smth to user

Больше примеров тут и тут.

ОБНОВЛЕНИЕ:
Сейчас пишу все в локальную базу. Так сильно удобнее. Пример тут.

Реклама

2 responses to “Пример ведения лога с использованием NLog

  1. Somebody 05/08/2011 в 21:52

    > И далее в специальном статическом классе исключений(CustomException) добавить
    > объявление объекта логгера и вызвать метод записи исключения в лог примерно так:

    а экстеншн для класса Exeption сделать не судьба?

    • Dima 05/08/2011 в 22:18

      Пример-старый..С тех пор вообще использую nlog по-другому. Приведенный способ не дает узнать название метода/класса, в котом было исключение. На практике оказалось, что лучше объявлять статичный nlogger в тех классах, где будет производиться логирование+конфигурация тут паршивая. Оказалось намного лучше выводить лог в виде таблицы csv.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: