This sample provides 2 types of loggers – a rolling logfile and an SMTP based logger.
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs//appLog.log"/>
<immediateFlush>true</immediateFlush>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<appendToFile value="true"/>
<datePattern value="yyyyMMdd"/>
<rollingStyle value="Date"/>
<MaxSizeRollBackups value="180" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true"/>
<levelMin value="DEBUG"/>
<levelMax value="FATAL"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %-25d thr:%-5t ${COMPUTERNAME}-[%property{SessionID}] %9rms %c{1},%M: '%m'%n"/>
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<subject value="App Name - Error Log" />
<smtpHost value="Relay.gov.dnvr" />
<from value="fromEmail" />
<to value="toEmail" />
<bufferSize value="512" />
<lossy value="true" />
<datePattern value="yyyyMMdd"/>
<threshold value="ERROR" />
<evaluator type="log4net.Core.LevelEvaluator,log4net">
<threshold value="ERROR" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="Application Error%newline${COMPUTERNAME} %date %-5level %logger - %message%newline%newline%newline" />
</layout>
</appender>
<root>
<appender-ref ref="SmtpAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Notes:
The rolling log file appender is setup to have a minimal lock. This is required if you are using a cluster, otherwise it might be an overkill.
To use the loggers in an app you need to initialize log4Net. I do this in Asp.Net apps in the application startup method using code similar to this:
void Application_Start(object sender, EventArgs e) { //the log4net.ConfigurationFile needs to be set as an appsetting in your config file //the following code configures log4Net using the log4net.config file settings string logFileName = ConfigurationManager.AppSettings["log4Net.ConfigurationFile"]; if (string.IsNullOrEmpty(logFileName) == false) { System.IO.FileInfo fi = new System.IO.FileInfo(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, logFileName)); if (fi != null && fi.Exists) log4net.Config.XmlConfigurator.Configure(fi); } }
where log4net.configurationFile is an appSetting in your web.config file pointing to the location of the log4net file.
To use the logger, you first need to get a logger object using the following code:
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Logging is performed using the following code:
Log.Debug(“message”) or Log.Error(“message”), etc.
No comments:
Post a Comment