Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Config Section: Add the below log4net Config section to add the namespace:

    Code Block
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
        <section name="exceptionManagement" type="Aptify.Framework.ExceptionManagement.ExceptionManagerSectionHandler,AptifyExceptionManagement" />
        <section name="AttributeManagement" type="Aptify.Framework.AttributeManagement.AttributeManagerSectionHandler,AptifyAttributeManagement" />
      </configSections>



  2. Root: A single root section is required under the top-level root section as specified in Config Section. These are the loggers that inherit information from your base logger (root).

    Code Block
    <log4net debug="false">
        <root>
          <appender-ref ref="TextInfoAppender"/>
          <appender-ref ref="TextDebugAppender"/>
          <appender-ref ref="TextErrorAppender"/>
          <appender-ref ref="TextPerformanceAppender"/>
        </root>
        <appender name="TextInfoAppender" type="log4net.Appender.RollingFileAppender">...</appender>
        <appender name="TextDebugAppender" type="log4net.Appender.RollingFileAppender">...</appender>
        <appender name="TextErrorAppender" type="log4net.Appender.RollingFileAppender">...</appender>
        <appender name="TextPerformanceAppender" type="log4net.Appender.RollingFileAppender">...</appender>
      </log4net>
    
    
  3. Appender: An appender is the name of the information logger. It specifies where, how and under what circumstances the information will be logged. Each appender has different parameters based on the data movement.

    Code Block
    <appender name="TextInfoAppender" type="log4net.Appender.RollingFileAppender">
          <file value=".\AptifyLogs\Infolog.txt"/>
          <appendToFile value="true"/>
          <rollingStyle value="Size"/>
          <maximumFileSize value="5MB"/>
          <maxSizeRollBackups value="-1"/>
          <staticLogFileName value="true"/>
          <datePattern value="_yyyy.MM&quot;.log&quot;"/>
          <filter type="log4net.Filter.LevelMatchFilter">...</filter>
          <filter type="log4net.Filter.LevelMatchFilter">...</filter>
          <filter type="log4net.Filter.LevelMatchFilter">...</filter>
          <filter type="log4net.Filter.LevelMatchFilter">...</filter>
          <filter type="log4net.Filter.LevelMatchFilter">...</filter>
        </appender>
  4. Filter:  With a filter, you can specify which level(s) to log and also look for keywords in the message. When a message fits inside the criteria for a filter, it is logged and the processing of the filter is finished. This is the biggest gotcha of a filter. Therefore, ordering of the filters becomes very important while creating a complex filter.

    Image Removed
    Code Block
    <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO"/>
            <acceptOnMatch value="true"/>
          </filter>

Application Configurations

Following are the additional configurations to turn on /off the exception log for the respective level.

Image Removed              

Code Block
<appSettings>
    <add key="Aptify.Framework.Log.IsInfo

...

" value="true"/>
    <add key="Aptify.Framework.Log.IsDebug

...

" value="true"/>
    <add key="Aptify.Framework.Log.IsPerformance" value="false"/>
  </appSettings>
  1. Aptify.Framework.Log.IsInfo:  Set a Boolean value to turn On/Off log for Logging Debug info exception.
  2. Aptify.Framework.Log.IsPerformanceIsDebug: Set a Boolean value to turn On/Off log for Logging performance exception.Debug exception.
  3. Aptify.Framework.Log.IsPerformance: Set a Boolean value to turn On/Off log for Logging performance exception.

 

Code Example for Your Reference

Below is an example of the log4net code in the app.config file:

Code Block
<log4net debug="false">
    <root>
      <appender-ref ref="TextInfoAppender"/>
      <appender-ref ref="TextDebugAppender"/>
      <appender-ref ref="TextErrorAppender"/>
      <appender-ref ref="TextPerformanceAppender"/>
    </root>
    <appender name="TextInfoAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\AptifyLogs\Infolog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maximumFileSize value="5MB"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="true"/>
      <datePattern value="_yyyy.MM&quot;.log&quot;"/>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO"/>
        <acceptOnMatch value="true"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="DEBUG"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="PERFORMANCE"/>
        <acceptOnMatch value="false"/>
      </filter>
      <layout type="Aptify.Framework.Log.TextLayout"/>
    </appender>
    <appender name="TextDebugAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\AptifyLogs\Debuglog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="_yyyy.MM&quot;.log&quot;"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="true"/>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="DEBUG"/>
        <acceptOnMatch value="true"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="PERFORMANCE"/>
        <acceptOnMatch value="false"/>
      </filter>
      <layout type="Aptify.Framework.Log.TextLayout"/>
    </appender>
    <appender name="TextErrorAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\AptifyLogs\Errorlog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="_yyyy.MM&quot;.log&quot;"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="true"/>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="DEBUG"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL"/>
        <acceptOnMatch value="true"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR"/>
        <acceptOnMatch value="true"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="PERFORMANCE"/>
        <acceptOnMatch value="false"/>
      </filter>
      <layout type="Aptify.Framework.Log.TextLayout"/>
    </appender>
    <appender name="TextPerformanceAppender" type="log4net.Appender.RollingFileAppender">
      <file value=".\AptifyLogs\Performancelog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="_yyyy.MM&quot;.log&quot;"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="true"/>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="DEBUG"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR"/>
        <acceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="PERFORMANCE"/>
        <acceptOnMatch value="true"/>
      </filter>
      <layout type="Aptify.Framework.Log.TextLayout"/>
    </appender>
  </log4net>