在服务以及Asp.net网站中配置Log4net
Log4net是一个开源的记录日志的插件,在使用时需要程序员对其进行配置。
该配置分两种情况(服务&网站)
1.服务(以及控制台应用程序)下的配置:
1.1 将log4net.config放置在应用程序生成目录(debug/release)下,具体内容如下(列出了主要功能,可根据徐求自行选择配置):
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="errorAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="ERROR" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\err.log" /> <PreserveLogFileNameExtension value="true" /> <!--日志文件名开头--> <File value="Logs\err.log" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="infoAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="INFO" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\info.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="debugAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="DEBUG" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\debug.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="perfAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="INFO" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\perf.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="errorAppender" /> <appender-ref ref="infoAppender" /> <appender-ref ref="debugAppender" /> </root> <logger name="Performance" additivity="false"> <level value="ALL" /> <appender-ref ref="perfAppender" /> </logger> <logger name="WeiXinApp" additivity="false"> <level value="ALL" /> <appender-ref ref="errorAppender" /> <appender-ref ref="infoAppender" /> <appender-ref ref="debugAppender" /> </logger> </log4net>
1.2 在需要记录日志的程序集中引用log4net.dll文件。
1.3 在程序集中添加一个LogProvide类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class LogProvider { private static ILog _logger; public static ILog GetLogger() { if (_logger == null) { string logConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"); XmlConfigurator.Configure(new FileInfo(logConfig)); _logger = LogManager.GetLogger("TestSplit"); } return _logger; } }
1.4 调用LogProvide. GetLogger获取_logger实例,并通过实例提供的方法记录日志。
2.Asp.Net网站环境下的配置:
1.1 在WebConfig中的Configuration下添加如下内容:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections>
1.2将上面的log4net.config中的log4net节点之间的部分追加到上面的节点之后:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<log4net> <appender name="errorAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="ERROR" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\err.log" /> <PreserveLogFileNameExtension value="true" /> <!--日志文件名开头--> <File value="Logs\err.log" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="infoAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="INFO" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\info.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="debugAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="DEBUG" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\debug.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <appender name="perfAppender" type="log4net.Appender.RollingFileAppender"> <filter type="log4net.Filter.LevelMatchFilter"> <levelToMatch value="INFO" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> <File value="Logs\perf.log" /> <PreserveLogFileNameExtension value="true" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--混合使用日期和文件大小变换日志文件名--> <rollingStyle value="Composite" /> <!--日期的格式--> <datePattern value="yyyyMMdd" /> <!--最大变换数量--> <maxSizeRollBackups value="1000" /> <!--最大文件大小--> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %logger - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="errorAppender" /> <appender-ref ref="infoAppender" /> <appender-ref ref="debugAppender" /> </root> <logger name="Performance" additivity="false"> <level value="ALL" /> <appender-ref ref="perfAppender" /> </logger> <logger name="WeiXinApp" additivity="false"> <level value="ALL" /> <appender-ref ref="errorAppender" /> <appender-ref ref="infoAppender" /> <appender-ref ref="debugAppender" /> </logger> </log4net>
1.3 在网站中引用log4net.dll插件,并在Global中作如下配置:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 XmlConfigurator.Configure(); }
1.4 在需要记录日志的程序集中引用log4net.dll文件。
1.5 在程序集中添加一个LogProvide类
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
class LogProvider { private static ILog _logger; public static ILog GetLogger() { if (_logger == null) { _logger = LogManager.GetLogger("TestSplit"); } return _logger; } }
1.6 调用LogProvide. GetLogger获取_logger实例,并通过实例提供的方法记录日志。