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

Доброго времени суток! Эта статья носит справочный характер. В ней приведен пример (своего рода 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);

 


    
        

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

  1. SKuznezov:

    Ваш материал удивительно понятный.
    Подскажите. Как из C# обратиться к голосовому движку виндовс на произношение текста из блокнота виндовс.
    Мог бы создать тему , но форума нет.
    Не уверен что найду ваш ответ(мне 50+)
    Леплю микропрогу для себя.

  2. Ferz:

    Добрый день! Можно сделать следующим образом:
    1. Создать консольное приложение на базе .Net Framework.
    2. В проекте добавить reference (правой кнопкой мыши вызвать на References, выбрать Add Reference… в левой части выбрать пункт Assemblies, и в списке выбрать System.Speech).
    3. Добавить в код using System.Speech.Synthesis;
    4. В методе Main написать код:
    SpeechSynthesizer synth = new SpeechSynthesizer();
    synth.SetOutputToDefaultAudioDevice();
    synth.Speak(«Это некоторый текст, который будет произнесён голосом!»);

    Предварительно, текст, передаваемый в метод Speak можно считать из файла, или получить любым другим способом.

  3. SKuznezov:

    Здравствуйте.
    Спасибо за ответ.
    Скажите, всегда ли между C# и низкоуровневым языком виндовс
    должен быть Net Framework,
    и создаётся ли всё нужное в Visual Studio(я использую) автоматически.
    Так ли это для си++?
    Прошу вас подумать о кнопке в
    WordPress «вопросы читателей на которые хочу ответить».
    Я не собираюсь стать программистом т.к. уже зрение -3.
    Буду рад редактированию ниже.
    По нику думаю что вы как и я(раньше) сильно играли в шахматы.

  4. SKuznezov:

    если сильно не играли в шахматы.
    извините.

  5. Ferz:

    Добрый вечер.

    1. Если коротко, то для работы программ, написанных на C#, на целевом ПК обязательно должен быть установлен .Net Framework (это некоторая прослойка, которая обеспечивает работу программы и VS эту проблему к сожалению не решит). На на в Windows по умолчанию .Net Framework уже может быть установлен (зависит от версии Windows и версии .Net, для которой собрана программа).
    2. Если речь идет о нативном C++ (не C++ для .Net), то на нем можно собрать программу, которая без проблем запустится на ПК без установки дополнительных компонентов.
    3. -3 для программиста не приговор (тем более в наше время), было бы желание.
    4. В шахматы сильно не играл, но увлекался, ник оттуда. ))

    p.s. Кнопка, может быть и появится, если позволит время (сайтом уже давно не занимаюсь, если честно, а Ваш комментарий заметил почти случайно).

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