Можете ли вы контролировать любой другой параметр при использовании log4net? - PullRequest
0 голосов
/ 21 апреля 2011

В моем коде у меня Db logging с использованием log4net.Я заметил, что класс, который выполняет ведение журнала, имеет этот код.

 public class Logger
    {
        readonly log4net.ILog _log;
        public Logger()
        {
            XmlConfigurator.Configure();
            _log = log4net.LogManager.GetLogger("Oracle_Log_Appender");
        }


        public void Log(string logString)
        {
                _log.Debug(logString);
        }
    }

Строка, которую я передаю этому механизму, вставляется в таблицу журнала в столбце сообщения.Я хотел бы иметь еще один столбец, который имеет значения идентификатора, которые позволят мне искать в таблице правильное сообщение.Пример, который я могу придумать: я работаю над серией объектов-клиентов.Каждый объект имеет первичный ключ с идентификатором.Если какая-либо из них не удалась, я хочу войти в нее следующим образом.

OBJECT_ID           MESSAGE                               OBJECT_TYPE
1001                Failed to fetch credit report         Customer

Могу ли я сделать это с помощью log4net?

1 Ответ

1 голос
/ 16 июня 2011

Пока вы просматриваете старый вопрос (с ответами!) По той же теме ... этот пример кода не идиоматический log4net. ILog экземпляры должны быть статическими только для чтения и именоваться классом, в котором они находятся.

private static readonly ILog Log = LogManager.GetLogger(typeof(<nameofclass>));

Управляйте своими дополнениями, фильтрами и уровнями по пространству имен классов, которые ведут журналирование. Ни одним именем в логгере. Итак, убедитесь, что ваш доступ к БД находится в одном и том же пространстве имен (или корне пространства имен). Например

MyProject.Infrastructure.Oracle

Нет также причин скрывать богатый интерфейс ILog за этим тупым классом-оболочкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...