This is my log4net config file
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="SmtpAppender" type="MySmtpClientSmtpAppender">
<to value="a@a.com" />
<from value="admin@x.com" />
<subject value="Game Server Monitoring Failed!" />
<smtpHost value="smtp.x.com" />
<username value="admin" />
<password value="x" />
<bufferSize value="256" />
<lossy value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} Method:%M %nMESSAGE:%n%m%n%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\\wwwlog" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<maximumFileSize value="10MB" />
<!--<rollingStyle value="Date" />-->
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="MySmtpAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Am I missing anything? Any tips/ advice to decrease log size while maintaining clarity, better conversion patterns? Any interesting hacks?
Edit: XMl file didnt get into the code block.Updating. Any sugggestions?
This may help a little, depending on how similar log4j and log4net are, I would think they are based on the same specification, but I don't know for sure.
Well I can't tell you what I have in my log4net config, but I can tell you what I have in my log4j config if that's good enough...
Also I have a corresponding chainsaw configuration file:
Also here is some information that may help you decifer the latter file: http://wiki.apache.org/logging-log4j/Configuring_a_log4j_RollingFileAppender_with_Chainsaw
For logging with diferent colors when showing on console depending on the message level (debug, info, error or fatal). The second appender is to save it on a file:
Nobody mentioned encoding. It's pretty important if you are logging messages in Chinese, Japanese, Arabic or any double-byte language. Here is an example:
To reduce log file size, you could try adjusting the ConversionPattern:
here's the format I use:
BEFORE:
2012-06-05 10:58:40,819 [1] INFO My App [(null)] - My App - ===star ting....
AFTER:
06/05 11:17:29,151-{INFO}-My App - ===starting...
note: the documentation from Apache seems to be incorrect for log4net - as it says to use SSS for milliseconds, whereas log4net uses fff
A small saving per line could make a big difference overall :)
One suggestion for the RollingLogFileAppender is to use the minimal lockingModel. With this setting the log file isn't locked, rather it is opened and then closed for each write.
I run a pretty minimal log4net configuration and prefer to use the XML format, but one thing I'd suggest adding (for web apps) is the ASP.NET trace appender. You simply have to add the following:
Then down at your root logger, or wherever you decide to activate it:
This allows me to get all of my pertinent debug data together on a single page when I'm debugging some minute ASP.NET details. Most of the time I have the ASP.NET trace appender commented out to disable it, but has really helped out in a few instances, especially when you're trying to figure out what particular server post back method is causing the hangup in your app.