Reputation: 1091
I managed to get started with Log4net but all my classes are using the same appender. I want some classes to use a special appender.
Following is my log file:
<appender name="InfoRollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="C:\Test.log"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="_yyyy-MM-dd.log"/>
<param name="StaticLogFileName" value="true"/>
<maximumFileSize value="100KB" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline ---------------START---------------------- %newline %date - %message %newline ----------------END--------------------- %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
<filter class="log4net.Filter.DenyAllFilter"/>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="InfoRollingLogFileAppender" />
</root>
Here is how I am using it in my code:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
and then to log I use log.Debug("Goes in Log File")
.
My question is how can I have different appenders for specific classes?
Upvotes: 2
Views: 1562
Reputation: 17018
You can define appenders per logger which in your case translates to "per class":
<root>
<level value="DEBUG" />
<appender-ref ref="InfoRollingLogFileAppender" />
</root>
<logger name="YourNameSpace.YourClass" additivity="false">
<level value="DEBUG" />
<appender-ref ref="YourOtherAppender" />
</logger>
Important is the additivity
flag: Without it the appenders defined in the root (or parent) logger are inherited.
Upvotes: 3