Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

log4net hierarchy and logging levels

This site says

Loggers may be assigned levels. Levels are instances of the log4net.Core.Level class. The following levels are defined in order of increasing priority:

  • ALL
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • OFF

DEBUG seems to have lowest priority and ERROR is higher.

Question

  • If I set Min and Max example DEBUG and ERROR it prints everthing DEBUG, INFO, WARN and ERROR. Without use of min and max filter. If I specify ERROR (Logging level = ERROR) Will it include DEBUG, INFO & WARN
 <filter type="log4net.Filter.LevelRangeFilter">      <param name="LevelMin" value="ERROR"/>      <param name="LevelMax" value="ERROR"/>  </filter> 

Instead of min and max filter. Is it possible to configure a level and include all other levels below it for logging.

Example - Set level as Error it will include DEBUG, INFO, WARN and ERROR. Is this possible with log4net?

Posting log4net config based on one of comments:

     <?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> 

like image 642
Siva Avatar asked Jan 19 '12 12:01

Siva


People also ask

Is log4net structured logging?

log4net doesn't support the concept of structured logging. Like shown in the conversionPattern element in the XML configuration, you have some variables to play with when writing to the storage. But including properties like FirstName in the Serilog example isn't available.

Is log4net based on log4j?

The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent Apache log4j™ framework to the Microsoft® . NET runtime.


1 Answers

This might help to understand what is recorded at what level Loggers may be assigned levels. Levels are instances of the log4net.Core.Level class. The following levels are defined in order of increasing severity - Log Level.

Number of levels recorded for each setting 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 
like image 133
Mel Pama Avatar answered Sep 19 '22 18:09

Mel Pama