NLog to Enterprise Library - PullRequest
       394

NLog to Enterprise Library

3 голосов
/ 07 ноября 2010

Используя приведенный ниже фрагмент, который использует NLog, как это можно сделать с помощью ведения журнала Enterprise Library 5.0?

    private Logger _logger;
    public NLogger() {            
        _logger = LogManager.GetCurrentClassLogger();
    }

    public void Info(string message) {
        _logger.Info(message);
    }

    public void Warn(string message) {
        _logger.Warn(message);
    }

1 Ответ

5 голосов
/ 08 ноября 2010

Вы ищете что-то вроде этого:

private LogWriter _logger;
public void EntLibLogger()
{
    _logger = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); ;
}

public void Info(string message)
{
    LogEntry log = new LogEntry();
    log.Message = message;
    log.Categories.Add("Information");
    log.Priority = Priority.Normal;
    log.Severity = TraceEventType.Information;
    _logger.Write(log);
}

public void Warn(string message)
{
    LogEntry log = new LogEntry();
    log.Message = message;
    log.Categories.Add("Warning");
    log.Priority = Priority.High;
    log.Severity = TraceEventType.Warning;
    _logger.Write(log);
}

public void Error(string message, int EventID, Dictionary<String,String> dictMessage)
{
    LogEntry log = new LogEntry();
    log.Message = message;
    log.Categories.Add("Error");
    log.Priority = Priority.Highest;
    log.Severity = TraceEventType.Error;
    log.EventId = EventID;
    _logger.Write(log, dictMessage);
}

Настройка параметров конфигурации в app.config - сложная задача.

Я рекомендую сделать EventID глобально уникальным для каждого вызова (системная документация всегда включает электронную таблицу с этими номерами и проект / файл / строку #, в которой они встречаются).Таким образом, если приложение находится в рабочем состоянии, весьма вероятно, что вы получите 1 строку из журнала и вам необходимо будет определить, откуда в источнике поступил этот вызов журналирования.Я обычно добавляю словарь вещей для локальных переменных и их значений для целей отладки.Одно место хочет, чтобы предыдущие значения были зарегистрированы, поэтому события аудита всегда включают словарь.

При ведении журнала по умолчанию в базе данных Entlib сохраняет «категорию» в виде строки как в категориях, так и в таблице журналов.Серьезность, приоритет и EventID сохраняются как целые.FormattedMessage - это большой набор данных, который определен в разделе форматеров, а также включает в себя содержимое (пары ключ-значение) словарей - если они используются.

Категории - это коллекция, потому что может быть несколько раз, когда вы хотите записать все в базу данных, но некоторые сообщения также записываются в журнал событий и / или отправляют разработчику текстовое сообщение, чтобы перенаправить фанни вработать как можно скорее.В одном месте, где я работал, использовался пейджер Iridium, чтобы сообщить назначенному человеку, что серверы не работают / находятся в беде, поскольку им нравилось лазать по горам, они часто были там, где не было сотового покрытия.

...