• Программинг

Нужны источники бесперебойного питания?

Источники бесперебойного питания от дизельстор

C#. Простой пример использования логирования log4net

Эта статья для тех, кто хочет быстро начать использовать логирование в своих программах. В доступной форме рассмотрим подключение и использования библиотеки для ведения логов – log4net. Я не буду расписывать достоинства и недостатки данного логгера. Просто хочу привести пример, который подтолкнет новичков на использование логирования при разработке своих программ. Логирование будет вестись просто в текстовый файл. Если у вас уже есть какой-то проект, то все настройки вы можете проводить в нем. Все остальные, могут создать новый проект – так поступлю я, и начать использовать логирование. Скачиваем последнюю версию библиотеки по следующему адресу. Распаковываем…

Настройка log4net

Из папки bin\net\2.0\release\ подключаем к нашему проекту файл log4net.dll. После удачного подключения в References появится log4net.

Теперь в файле app.config (между ….ваш код….), который описывает настройку вашего приложения, необходимо добавить следующий код:

1 <configSections>
2     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
3 </configSections>
4  
5 <log4net>
6     <appender name="FileAppender" type="log4net.Appender.FileAppender">
7       <param name="File" value="d:\\log-file.txt" />
8       <param name="AppendToFile" value="true" />
9       <layout type="log4net.Layout.PatternLayout">
10         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
11       </layout>
12     </appender>
13     <root>
14       <level value="DEBUG" />
15       <appender-ref ref="FileAppender" />
16     </root>
17 </log4net>

В параметре File – задается путь к файлу (в данном случае на диске D будет создан файл log-file.txt и в него будет вестись запись). AppendToFile – утанавливаем в true, чтобы после каждого запуска, программа продолжала писать лог, а не начинала новый. ConversionPattern – описывает формат записи каждой строки. Значение level устанавливаем в DEBUG.

С файлом настроек мы закончили. Теперь будем писать код.

В главной функции программы (функция Main файла Program.cs) необходимо указать, что настройки мы будем брать из файла конфигурации программы. В нашем случае файл Program.cs выглядит следующим образом (без вашего, уже написанного кода):

1 ...
2 using log4net;
3 using log4net.Config;
4 ...
5  
6 static class Program
7 {
8 ...
9 //Этот объект будет виден в любом месте вашей программы
10 public static readonly ILog log = LogManager.GetLogger(typeof(Program));
11 ...
12  
13     [STAThread]
14     static void Main()
15     {
16         ...
17         //Конфигурируем логер
18         log4net.Config.DOMConfigurator.Configure();
19         ...
20     }
21 )

Фактически, вам необходимо добавить 4 строчки кода, чтобы начать использовать логирование.

Логирование используется в классах. Поэтому, в классе необходимо добавить строчку:

1 public class Ваш_класс
2 {
3     //Включаем логирование
4     public static readonly ILog log = LogManager.GetLogger(typeof(Ваш_класс));
5 }

После этого в классе можно использовать объект log. Для примера я создал следующий класс с двумя методами.

1    class TestLog
2    {
3        public static readonly ILog log = LogManager.GetLogger(typeof(TestLog));
4    
5        public void Test1()
6        {
7            int r = 2 + 2;
8            //Просто информация
9            log.Info("Результат сложения = " + r);
10        }
11    
12        public void Test2()
13        {
14            try
15            {
16                //Специально вызываем ошибку для проверки
17                TestLog d = null;
18                d.ToString();
19            }
20            catch (Exception error)
21            {
22                log.Error(error.Message);
23            }
24        }
25    }

У меня получились следующие результаты работы методов Test1 и Test2:

2011-02-08 09:35:47,469 [11] INFO TestLog4Net.TestLog [(null)] – Результат сложения = 4
2011-02-08 09:35:47,531 [11] ERROR TestLog4Net.TestLog [(null)] – В экземпляре объекта не задана ссылка на объект.

На этом у меня все. Традиционно, к статье прилагается тестовый проект. Более подробную документацию по логгеру можно получить на сайте log4net.