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>
if (!log4net.LogManager.GetRepository().Configured)
{
log4net.Config.XmlConfigurator.Configure();
}