Log4net, как зарегистрировать подробное сообщение?

Я могу зарегистрировать информационные сообщения без проблемы, но не могу выяснить, как зарегистрировать подробные сообщения. Любая справка была бы одобрена.

Моя проблема:

loggingEvent. Уровень может быть проверен в функции Формата. Возможные значения среди других, Информации, Отладки, Ошибки, Подробной. Существуют больше, но они - те, я буду использовать главным образом.

Фактический журнал возражает, только имеет следующие методы:

Журнал. Информация
Журнал. Отладка
Журнал. Предупредить
Журнал. Ошибка

Поскольку Вы видите - нет подробный!

Таким образом, как я могу Зарегистрировать подробное сообщение, это отличается от отладки

Заранее спасибо

15
задан Grhm 13 April 2018 в 14:59
поделиться

4 ответа

Вы можете добавить уровень Verbose (или Trace) в log4net, используя методы расширения. This is what I'm using:

public static class ILogExtentions
{
    public static void Trace(this ILog log, string message, Exception exception)
    {
        log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, 
            log4net.Core.Level.Trace, message, exception);
    }

    public static void Trace(this ILog log, string message)
    {
        log.Trace(message, null);
    }

    public static void Verbose(this ILog log, string message, Exception exception)
    {
        log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, 
            log4net.Core.Level.Verbose, message, exception);
    }

    public static void Verbose(this ILog log, string message)
    {
        log.Verbose(message, null);
    }

}

Usage example:

public class ClientDAO
{
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ClientDAO));

    public void GetClientByCode()
    {
        log.Trace("your verbose message here");
        //....
    }
}

Source:

http://www.matthewlowrance.com/post/2010/07/14/Logging-to-Trace-Verbose-etc-with-log4net.aspx

30
ответ дан 1 December 2019 в 00:49
поделиться

You не могу понять, потому что, AFAIK нет "подробного" уровня в log4net.Он есть в log4j?

Ниже приведены уровни

ВСЕ ОТЛАДКА ИНФОРМАЦИЯ ПРЕДУПРЕЖДЕНИЕ ОШИБКА FATAL ВЫКЛ.

Информационные сообщения - это сообщения, в которых вы указываете, что вы делаете в своем приложении в данный момент. Эти сообщения, выдаваемые командами или инструментами ОС, когда вы говорите -verbose, будут такими сообщениями.

Отладочные сообщения в основном предназначены для программистов и позволяют записывать такую ​​информацию, как создание переменных, жизненный цикл, трассировки стека исключений и т. Д. То, что будет интересно только программистам / сотрудникам службы поддержки.

{{1} }

[Edit] Просто подумал об этом. Вы можете очень хорошо добавить в свое приложение переключатель или элемент конфигурации с именем «verbose», а затем выдавать информационные сообщения, если установлено значение true. Или оберните журнал вспомогательным методом, который будет входить в log4net, а также отправлять то же сообщение на консоль. Кроме того, вы можете использовать ConsoleAppender для записи сообщений на консоль. Но я никогда им не пользовался. Это то, что вы искали?

Надеюсь, это поможет.

3
ответ дан 1 December 2019 в 00:49
поделиться

Apache log4net имеет следующие уровни журнала:

DEBUG

Для сообщений, которые считаются более подробными, чем информационные сообщения ( INFO ), можно выбрать уровень DEBUG . Написание отладочных сообщений должно быть таким простым, как:

myLog.Debug("This is a pretty verbose message");

Если вы пишете очень много отладочных сообщений и / или создание сообщений требует больших затрат (например, включает тяжелую конкатенацию строк), подумайте о добавлении условного выражения для регистрации:

if (myLog.IsDebugEnabled)
{
    myLog.Debug("This is a pretty verbose message");
}

Если вы обнаружите вы делаете это часто и хотите ОСУШИТЬ свой код, подумайте об использовании методов расширения для отложенного форматирования сообщений , которые превратят приведенный выше оператор в следующий:

Log.Debug( () => "This is a pretty verbose message" );  
3
ответ дан 1 December 2019 в 00:49
поделиться

Попробуйте:

#bottombox {
background:transparent url(../images/bg-bottombox.png) no-repeat scroll 0 0;
float:none;
height:137px;
margin:0 auto;
padding-top:14px;
width:296px;
}

Это должно центрировать div в нижнем колонтитуле.

-121--1378113-
OrderBy(x => x.Order < 0 ? int.MaxValue : x.Order)

или если вам нужно упорядочить отрицательные значения в порядке убывания

OrderBy(x => x.Order < 0 ? (long)int.MaxValue - x.Order : (long)x.Order)
-121--4605215-

Я не пытался это сделать, но я думаю, что это должно быть довольно прямо вперед: внутренне log4net знает уровень «подробный»; только интерфейс ILog не раскрывает его. Поэтому добавление метода IsVerboseEnabled и Verbose () к этому интерфейсу должно быть достаточно простым. Конечно, вы должны быть готовы изменить исходный код log4net...

2
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: