Добавление логирования хода выполнения программы

Доброго времени суток! Эта статья носит справочный характер. В ней приведен пример (своего рода quick start) использования логера log4net в программе на C# (пока без дополнительных разъяснений).

В первую очередь, нужно добавить в проект своей программы log4net.dll в качестве reference (описание того как это делается, выходит за рамки данной статьи). После чего, нужно выполнить ряд действий описанных ниже.

Шаг 1. Создать основной класс, отвечающий за обеспечение логирования в своем проекте: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;

namespace TestLog
{
   public static class Logger
   {
      private static ILog log = LogManager.GetLogger("LOGGER");
      
      //Возвращает объект, через который будет осуществляться логирование
      public static ILog Log
      {
          get { return log; }
      }

      //Инициализация логера
      public static void InitLogger()
      {
          //Считывание конфигурации логера из файла
          XmlConfigurator.Configure(new System.IO.FileInfo("D:\\Logs\\TestConf.xml"));
      }
 }
}

Шаг 2. Простейшая настройка логера (с помощью конфигурационного файла, путь к которому указан в методе InitLogger):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <log4net>
 <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
 <param name="File" value="D:\Logs\Exchange.log"/>
 <param name="AppendToFile" value="true"/>
 <maxSizeRollBackups value="10"/>
 <maximumFileSize value="5MB"/>
 <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
 <layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%d %-5p %m%n"/>
 </layout>
 </appender>

 <logger name="LOGGER">
 <appender-ref ref="LogFileAppender"/>
 </logger>
 </log4net> 
</configuration>

Шаг 3. Простейшее использование логера:

Logger.InitLogger();
//Запись в лог с уровнем "Debug"
Logger.Log.Debug("Логер проинициализирован!");

Дальше приведены несколько примеров.

Пример 1. Создание расширения в виде вспомогательного метода (логирование с дополнительной информацией):

//Вспомогательный метод записи в лог массива данных (в шестнадцатеричном виде) в текстовым пояснением
public void WriteToLog(string aText, byte[] aDatas)
{
    if (aDatas == null)
    {
       Logger.Log.Debug(aText);
       return;
    }

    StringBuilder builder = new StringBuilder();

    foreach(byte oneByte in aDatas)
    {
        builder.Append(string.Format("{0:X2} ", oneByte));
    }

    Logger.Log.Debug(string.Format("\t{0}:\t{1}", aText, builder.ToString()));
}

Пример 2. Использование вспомогательного метода:

//В ЛОГ
WriteToLog("Запрос", toChannelArray);

 


    
        

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