User Tools

Site Tools


dotnet:log4net

Log4Net

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="%env{TEMP}\DEBUG.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="2MB" />
      <staticLogFileName value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
 
    <appender name="CurrentFile" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="%env{APPDATA}\MyApp\Current.log" />
      <appendToFile value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message%newline" />
      </layout>
 
      <!--<filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="INFO" />
      <levelMax value="FATAL" />
    </filter>-->
    </appender>
 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss} [%thread] %-5level [%logger] %message%newline" />
      </layout>
    </appender>
 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
      <param name="ApplicationName" value="MyApp" />
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%-5level [%logger] %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
         <levelMin value="INFO" />
         <levelMax value="FATAL" />
      </filter>
     </appender>
 
  <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
      <level value="INFO" />
      <foreColor value="White, HighIntensity" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <foreColor value="Yellow, HighIntensity" />
    </mapping>
    <mapping>
      <level value="ERROR" />
      <foreColor value="Red, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d{HH:mm:ss} [%logger] %message%newline"/>
    </layout>
  </appender>
 
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="rcpt@example.org" />
      <from value="from@example.org" />
      <subject value="Fehler" />
      <smtpHost value="smtp.example.org" />
      <username value="sender@example.org" />
      <password value="SECRET" />
      <authentication value="Basic" />
      <bufferSize value="512" />
      <lossy value="true" />
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR"/>
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %logger - %message [ProfileId: %property{ProfileId}, BezugsNr: '%property{BezugsNr}']%newline"/>
      </layout>
    </appender>
 
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="DebugFileAppender" />
      <appender-ref ref="CurrentFile" />
    </root>
 
    <logger name="Namespace.Class">
      <level value="INFO" />
      <appender-ref ref="ConsoleAppender" />
    </logger>
 
  </log4net>
 
</configuration>

VB

Private Shared mLog As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString)
Dim log As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString & "." & System.Reflection.MethodBase.GetCurrentMethod().ToString())
 
log4net.GlobalContext.Properties("EventID") = 110
log4net.LogManager.GetRepository().Configured

C#

log4net.Config.XmlConfigurator.Configure();
 
private static log4net.ILog mLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString());

ListBoxAppender

Public Class ListBoxAppender
    Inherits log4net.Appender.AppenderSkeleton
    Private Delegate Sub AppendDelegate(ByVal msg As String)
    Public Shared ListBox As ListBox
 
    Protected Overloads Overrides Sub Append(ByVal loggingEvent As log4net.Core.LoggingEvent)
        Dim msg = Me.RenderLoggingEvent(loggingEvent)
        If Not ListBox.InvokeRequired Then
            AppendInternal(msg)
        Else
            ListBox.BeginInvoke(New AppendDelegate(AddressOf AppendInternal), msg)
        End If
    End Sub
 
    Protected Overloads Sub AppendInternal(ByVal msg As String)
        If ListBox Is Nothing Then Return
        ListBox.Items.Add(msg)
        ListBox.SelectedIndex = ListBox.Items.Count - 1
    End Sub
 
End Class
<appender name="ListBoxAppender" type="ProjectName.ListBoxAppender">
	<layout type="log4net.Layout.PatternLayout">
		<conversionPattern value="%d{HH:mm:ss} %-5level [%thread] [%logger] %message" />
	</layout>
	<!--
	<filter type="log4net.Filter.LevelRangeFilter">
	<levelMin value="INFO" />
	<levelMax value="FATAL" />
	</filter>
	-->
</appender>

LoggerMatchFilter

<filter type="log4net.Filter.LoggerMatchFilter">
  <loggerToMatch value="FooLogger" />
  <acceptOnMatch value="false" />
</filter>

Property in Filename

<appender name="ClientDebugFile" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString">
    <conversionPattern value="log\clients\DEBUG_%property{Ip}.log" />
  </file>
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="5" />
  <maximumFileSize value="2MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level %logger - %message%newline" />
  </layout>
</appender>

Already Configured?

if (!log4net.LogManager.GetRepository().Configured)
{
   log4net.Config.XmlConfigurator.Configure();
}
dotnet/log4net.txt · Last modified: 2019/04/27 16:45 (external edit)