Крик души
Перебрав кучу различных вариантов, испробовав свои силы в самостоятельном написании системы ведения логов и почти уже отчаявшись получить систему, удовлетворяющую моим требованиям, наткнулся на систему log4net. И, казалось бы, вот оно счастье – бери и используй! Однако, как и в любой, более-менее сложной системе, все поначалу не так уж и просто (хотя потом понимаешь – куда уже проще?!). Используя проверенный метод научного тыка (благо исходники дают нахаляву) и все, что нашлось на просторах паутины, мне удалось-таки заставить этого монстра подчиниться. Итак, все по порядку.
Настройка
Как ни странно, для того чтобы заставить работать log4net его надо настроить. Существует 2 способа настроить log4net:
1. С помощью отдельного файла настройки;
2. Настройка программным образом.
И в первом и во втором случае необходимо настроить одни и те же вещи.
Более подробно о настройке первым способом можно почитать тут. Поэтому остановимся на втором способе.
static ILog log = log4net.LogManager.GetLogger(typeof(LogService));
// Создаем шаблон вывода
PatternLayout logLayout = new PatternLayout("[%-5level] [%date{HH:mm:ss}] [%10r] [%-20ndc] - %message%newline");
// Создаем RollingFileAppender - шлюз, создающий новый файл с логом, при переполнении текущего
RollingFileAppender logFileAppender = new RollingFileAppender();
// Указываем где будет лежать файл с логами
logFileAppender.File = Core.Converters.MainConverter.ParseString(@"C:\Temp\SuperMega.log");
// Устанавливаем шаблон вывода
logFileAppender.Layout = logLayout;
// Указываем, что в файл надо добавлять новые записи, а не создавать файл с логами заново
logFileAppender.AppendToFile = true;
// Указываем тип ротации. В данном случае файлы будут создаваться при переполнении и при изменении текущей даты
logFileAppender.RollingStyle = RollingFileAppender.RollingMode.Composite;
// Устанавливаем максимальный размер лог-файла, при превышении которого будет создаваться новый файл
logFileAppender.MaximumFileSize = "1MB";
// Устанавливаем количество файлов в ротации
logFileAppender.MaxSizeRollBackups = 10;
// Указываем уровень фильтрации
logFileAppender.Threshold = log4net.Core.Level.Info;
// Указываем, что имя текущего лог-файла будет всегда один и тот же
logFileAppender.StaticLogFileName = true;
// Активируем настроенные опции
// при этом не настроенные опции
// настраиваются значениями по-умолчанию
logFileAppender.ActivateOptions();
// Настраиваем log4net
log4net.Config.BasicConfigurator.Configure(logFileAppender);
Вот теперь можно вести логи приложения.
Использование
Для того, чтобы отслеживать в логах сообщения от разных источников можно использовать следующую конструкцию:
using (log4net.NDC.Push("Источник №1"))
{
log.Info("Очень важное информационное сообщение ");
}
В результате в лог-файле мы получим следующее:
[INFO ] [14:26:50] [ 343] [Источник №1 ] – Очень важное информационное сообщение
Комментариев нет :
Отправить комментарий