C# log4net 配置
安装log4net
项目 - 管理Nuget程序包,在浏览框中输入 log4net - 回车 - 选择 log4net - 安装。
添加log4net.config
在工程目录下添加log4net.config文件, 设置log4net.config的文件属性
,自动把log4net.config的内容复制到.exe文件所在的目录
log4net.config源码
修改AssemblyInfo.cs
在工程 - Properties - AssemblyInfo.cs文件中新增如下一行代码:
使用
<?xml version="1.0" encoding="utf-8" ?> <!-- log4.net 官网,https://logging.apache.org/log4net/ 看官方文档 C# 写法 ////////////////这个配置记录所有日志 <root> <level value="ALL" /> <appender-ref ref="SysAppender" /> </root> //////////////// public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("mLog"); public static readonly log4net.ILog defined = log4net.LogManager.GetLogger("defined"); logInfo.Info("11"); logInfo.Error("22"); logInfo.Debug("33"); defined.Info("44"); defined.Error("55"); defined.Debug("66"); --> <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> </configSections> <!--log4net配置文件--> <!-- 。。。。。。。。。。。控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF。。。。。。。。。。。 --> <log4net> <!-- <root>实际上就是一个根logger,所有其它logger都默认继承它,如果配置文件里没有显式定义,则框架使用根日志中定义的属性--> <root> <level value="ALL" /> <appender-ref ref="SysAppender" /><!--记录到哪个介质中去--> </root> <!--log--> <logger name="mLog"> <level value="ALL"/> <appender-ref ref="InfoAppender"/> <appender-ref ref="ErrorAppender"/> <appender-ref ref="ConsoleAppender"/> </logger> <!--自定义的log--> <logger name="defined"> <level value="ALL" /> <appender-ref ref="defined"/> </logger> <!--根记录log--> <appender name="SysAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <File value="log/log_SysAppender.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--创建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--备份日志数目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不变的--> <StaticLogFileName value="true"/> <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--输出格式--> <layout type="log4net.Layout.PatternLayout"> <!--日期 [级别]--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只记录级别在INFO-INFO之间的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL" /> <param name="LevelMax" value="OFF" /> </filter> </appender> <!--运行状态信息--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <File value="log/log_info.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--创建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--备份日志数目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不变的--> <StaticLogFileName value="true"/> <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--输出格式--> <layout type="log4net.Layout.PatternLayout"> <!--日期 [级别]--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只记录级别在INFO-INFO之间的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--运行错误信息--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <File value="log/log_error.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--创建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--备份日志数目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不变的--> <StaticLogFileName value="true"/> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--输出格式--> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只记录级别在WARN-FATAL之间的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d %-5p %c - %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--自定义信息--> <appender name="defined" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <File value="log/log_defined.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--创建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--备份日志数目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不变的--> <StaticLogFileName value="true"/> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--输出格式--> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只记录级别在WARN-FATAL之间的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net> </configuration>