Поиск…


замечания

В этом разделе представлен обзор того, что такое log4net, и почему разработчик может захотеть его использовать.

Следует также упомянуть о любых крупных предметах в log4net и ссылаться на связанные темы. Поскольку документация для log4net нова, вам может потребоваться создать начальные версии этих связанных тем.

Настройка log4net

Создадим простое консольное приложение Hello World и зарегистрируем что-то в консоли с помощью log4net. После этого мы можем его масштабировать, чтобы использовать его в реальных сценариях разработки в следующих примерах. Давайте начнем с малого и построим его оттуда.

Во-первых, нам нужно создать простой консольный проект в Visual Studio и WriteLine("Hello World") как показано ниже

введите описание изображения здесь

Затем нам нужно добавить библиотеку log4net в наш проект. Поэтому нам нужно щелкнуть правой кнопкой мыши по ссылке и выбрать « Управление пакетами NuGet»

введите описание изображения здесь

Затем выполните поиск log4net и установите

введите описание изображения здесь

Теперь мы успешно добавили log4net.dll в наш проект.

Теперь нам нужно настроить наш app.config (или web.config, если это веб-приложение). Эта часть немного сложна, но не паникуйте. Мы будем проходить через него шаг за шагом и запускать и запускать.

В app.config сначала нужно создать конфигурационный раздел под конфигурацией. Нам нужно указать имя и тип, как показано ниже:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>

Что мы здесь сделали, мы говорим о том, что мы собираемся создать раздел в нашем файле конфигурации с именем log4net который нужно искать. Все, что связано с протоколированием, будет здесь. От создания нашего файла журнала, как долго и какая информация должна регистрироваться. Итак, давайте продолжим и создадим раздел log4net .

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

Первое, что мы собираемся добавить в нашем разделе log4net, - это приложение. Приложение - это, в основном, инструмент ведения журнала. Это то, к чему мы хотим регистрировать наши журналы. Существует множество приложений, доступных для входа в файлы, базу данных и т. Д. В этом примере мы запишемся в окно консоли, поэтому создадим консольный Appender:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  
  </appender>
</log4net>

Затем нам нужно определить макет:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    
    </layout>
  </appender>
</log4net>

В разделе «Макет» мы определим, что хотим отобразить на консоли, и как мы хотим отображать его. Для этого нам нужна схема преобразования. Существует много разных типов шаблонов, которые мы можем использовать, для этого примера мы будем придерживаться довольно простого шаблона.

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
    </layout>
  </appender>
</log4net>

То, что мы делаем выше, говорит о том, что нам нужна следующая информация: абсолютная метка времени, текущий поток, который генерирует исключение и уровень ведения журнала. В log4net имеется 7 уровней регистрации.

  • ВЫКЛ - ничто не регистрируется (не может быть вызвано)
  • FATAL
  • ОШИБКА
  • WARN
  • ИНФОРМАЦИЯ
  • DEBUG
  • ВСЕ - все регистрируется (не может быть вызвано)

Однако из 7 мы можем использовать только 5 (DEBUG, INFO, WARN, ERROR и FATAL). Объявление уровня регистрации в DEBUG означает, что он будет регистрировать все, то есть DEBUG, INFO, WARN, ERROR и FATAL. Однако при объявлении уровня ведения журнала WARN будут записываться только WARN, ERROR и FATAL. Надеюсь, вы понимаете иерархию.

Последнее, что нам нужно в app.config, - это раздел root. В корневом разделе размещены наши регистраторы верхнего уровня и уровень входа в систему. Важно понимать, что все наследуется от корня, поэтому ни один из приложений не будет регистрироваться, если на него не ссылаются под root. С этим добавлением, вот как выглядит ваш app.config :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration> 

Это не плохая идея, чтобы скопировать файлы в файл конфигурации, однако важно понять, за что они отвечают. Теперь, когда мы закончили настройку нашего app.config , нам нужно добавить немного кода в наш консольный проект. Во-первых, нам нужно определить одноразовую запись, которая должна быть размещена вне вашего класса.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Поместите его прямо под мои операторы using в файле Program.cs. Затем нам нужно создать экземпляр регистратора, чтобы использовать его для ведения журнала. Это делается раз в классе.

private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

И, наконец, нам нужно записать что-то

log.Error("This is my error");

Файл Program.cs должен выглядеть примерно так:

using System;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace Log4netTutorial
{
    class Program
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            log.Error("This is my error");

            Console.ReadLine();
        }
    }
}

Идите вперед и запустите программу, вы должны зарегистрировать свою ошибку в консоли:

введите описание изображения здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow