2012-01-19 3 views
79

This site говоритlog4net

Лесорубы могут быть назначены уровни. Уровни - это экземпляры класса log4net.Core.Level. Следующие уровни определяются в порядке увеличения приоритета:

  • ВСЕ
  • DEBUG
  • INFO
  • WARN
  • ОШИБКА
  • FATAL
  • OFF

DEBUG имеет наименьший приоритет, а ОШИБКА выше.

Вопрос

  • Если установить Min и Max пример DEBUG и ERROR печатает Everthing DEBUG, INFO, WARN и ERROR. Без использования фильтра min и max. Если я указываю ERROR (Logging уровень = ERROR) Будет ли она включать DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter"> 
    <param name="LevelMin" value="ERROR"/> 
    <param name="LevelMax" value="ERROR"/> 
</filter> 

Вместо минимального и максимального фильтра. Можно ли настроить уровень и включить все остальные уровни ниже для ведения журнала.

Пример - Установите уровень как Ошибка, он будет включать в себя DEBUG, INFO, WARN и ERROR. Возможно ли это с помощью log4net?

Проводка log4net конфигурации на основе одного из комментариев:

 <?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <configSections> 
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
     </configSections > 
     <log4net debug="true"> 
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
     <layout type="log4net.Layout.XMLLayout" /> --> 
     <param name="File" value="TestLog.log" /> 
     <param name="AppendToFile" value="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <header type="log4net.Util.PatternString" value="[START LOG] %newline" /> 
      <footer type="log4net.Util.PatternString" value="[END LOG] %newline" /> 
      <conversionPattern value="%d [%t] %-5p - %m%n" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG"/> 
      <param name="LevelMax" value="ERROR"/> 
     </filter> 
    </appender> 
<root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    <logger name="log4NetExample"> 
     <!-- <appender-ref ref="B" /> --> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
    </logger> 
</log4net> 

+0

Вы пытались установить уровень ведения журнала в INFO и проверяли, включает ли он INFO и DEBUG? – Default

+4

_DEBUG имеет наименьший приоритет, а ошибка - самая высокая. Это не ** приоритет **, а порог ** ** вверх или над сообщением будет зарегистрирован. –

+0

Вы пытались использовать только 'levelMax'? Я думаю, что это должно включать все ниже, если вы не укажете 'levelMin' –

ответ

32

Для большинства приложений, которые вы хотели бы установить минимальный уровень, но не максимальный уровень.

Например, при отладке кода установите минимальный уровень в DEBUG, а в производстве установите его в WARN.

+0

. Пожалуйста, проверьте мой обновленный вопрос. Мой вопрос предназначен для уровней и операторов журнала. – Siva

+0

Измените' 'на' < level = "WARN" /> ', и вы получите только предупреждения и ошибки. –

+1

Нет, это не помогает. Я попытался измениться. Я не видел журналы, на которые включен приоритет – Siva

18

DEBUG покажет все сообщения, INFO все кроме сообщений DEBUG и т. Д.
Обычно используется либо INFO, либо WARN. Это зависит от политики компании.

+0

Пожалуйста, уточните мой обновленный вопрос. Мой вопрос предназначен для уровней и отчетов журнала. – Siva

+0

Пожалуйста, разместите всю конфигурацию log4Net, у вас могут быть два регистратора, которые мешают. – weismat

+0

И я лично использовал только настройку уровня. Я думаю, что следует избегать настроек Min/Max, если это возможно. – weismat

7

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

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

<filter type="log4net.Filter.LevelMatchFilter"> 
    <levelToMatch value="WARN"/> 
</filter> 

Или исключить определенный уровень протоколирования добавив в фильтр узел «deny».

Вы можете складывать несколько фильтров вместе, чтобы указать несколько уровней.Например, если вы хотите только уровни WARN и FATAL. Если уровни, которые вы хотели, были последовательными, то более подходящим является LevelRangeFilter.

Ссылка Doc: log4net.Filter.LevelMatchFilter

Если другие ответы не дали достаточно информации, мы надеемся, что это поможет вам получить то, что вы хотите от log4net.

+0

ah deny - это то, что я лично искал. хотел бы сообщить сообщения об ошибках info +, но не отлаживать. Спасибо за это. – Sarfaraaz

6

Его истинная официальная документация (Apache log4net™ Manual - Introduction) утверждает, существуют следующие уровни ...

  • ВСЕ
  • DEBUG
  • INFO
  • WARN
  • ОШИБКА
  • FATAL
  • OFF

... но странно, когда я рассматриваю сборки log4net.dll, v1.2.15.0 запечатанный класс log4net.Core.Level я вижу следующие уровни определены ...

public static readonly Level Alert; 
public static readonly Level All; 
public static readonly Level Critical; 
public static readonly Level Debug; 
public static readonly Level Emergency; 
public static readonly Level Error; 
public static readonly Level Fatal; 
public static readonly Level Fine; 
public static readonly Level Finer; 
public static readonly Level Finest; 
public static readonly Level Info; 
public static readonly Level Log4Net_Debug; 
public static readonly Level Notice; 
public static readonly Level Off; 
public static readonly Level Severe; 
public static readonly Level Trace; 
public static readonly Level Verbose; 
public static readonly Level Warn; 

Я использую TRACE совместно с PostSharp OnBoundaryEntry и OnBoundaryExit в течение длительного времени. Интересно, почему эти другие уровни не содержатся в документации. Кроме того, каков истинный приоритет всех этих уровней?

+0

Для чего они стоят, все они перечислены по следующей ссылке, но они не обновили свои руководства в то время, пока это кажется. http://logging.apache.org/log4net/release/sdk/html/T_log4net_Core_Level.htm – Dinerdo

4

Вот код, говоря о приоритете всех уровней Log4Net:

TraceLevel(Level.All); //-2147483648 

TraceLevel(Level.Verbose); //10 000 
TraceLevel(Level.Finest); //10 000 

TraceLevel(Level.Trace); //20 000 
TraceLevel(Level.Finer); //20 000 

TraceLevel(Level.Debug); //30 000 
TraceLevel(Level.Fine); //30 000 

TraceLevel(Level.Info); //40 000 
TraceLevel(Level.Notice); //50 000 

TraceLevel(Level.Warn); //60 000 
TraceLevel(Level.Error); //70 000 
TraceLevel(Level.Severe); //80 000 
TraceLevel(Level.Critical); //90 000 

TraceLevel(Level.Fatal); //110 000 
TraceLevel(Level.Emergency); //120 000 

TraceLevel(Level.Off); //2147483647 


private static void TraceLevel(log4net.Core.Level level) 
{ 
    Debug.WriteLine("{0} = {1}", level, level.Value); 
} 

enter image description here

+0

интересно. интересно, все ли они могут быть использованы в config – Sarfaraaz

31

Это может помочь понять, что записано на каком уровне Лесорубы могут быть назначены уровни. Уровни - это экземпляры класса log4net.Core.Level. Следующие уровни определяются в порядке возрастания степени тяжести - Уровень журнала.

Количество уровней, записанных для каждого уровня настройки:

ALL DEBUG INFO WARN ERROR FATAL OFF 
•All       
•DEBUG •DEBUG     
•INFO •INFO •INFO    
•WARN •WARN •WARN •WARN   
•ERROR •ERROR •ERROR •ERROR •ERROR  
•FATAL •FATAL •FATAL •FATAL •FATAL •FATAL 
•OFF •OFF •OFF •OFF •OFF •OFF •OFF 
+1

Извините, я думал, что это wswg, почему это не так? –

+0

Вы можете посмотреть [эту часть сайта] (http://stackoverflow.com/help/formatting) для правильного форматирования ответов –

2

Try, как это, он работал для меня

<root> 
    <!--<level value="ALL" />--> 
    <level value="ERROR" /> 
    <level value="INFO" /> 
    <level value="WARN" />  
</root> 

Это входит 3 вида ошибок - ошибка, информация, и предупреждение

Смежные вопросы