Log4net
1、添加引用
2、添加一个应用程序配置文件,并将其改名
3、内部配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <logger name="logerror"> <level value="ALL" /> <appender-ref ref="ErrorAppender" /> </logger> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> </logger> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogError\\" />
<param name="Encoding" value="UTF-8" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Composite" /> <!--<param name="MaximumFileSize" value="100MB" /> <param name="MaxSizeRollBackups" value="1000" />--> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd.'log'" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="异常时间:%date 线程ID:[%thread] 日志级别:%-5level 相关类:%logger - 描述:%message%newline" /> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\" />
<param name="Encoding" value="UTF-8" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Composite" /> <!--<param name="MaximumFileSize" value="100MB" /> <param name="MaxSizeRollBackups" value="1000" />--> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd.'log'" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 相关类:%logger - 描述:%message%newline" /> </layout> </appender> </log4net> </configuration>
配置样式:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称,例如: %f(file):输出语句所在的文件名输出样式: %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称,例如: %f(file):输出语句所在的文件名。 %l(line):输出语句所在的行号。 %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。。 %l(line):输出语句所在的行号。 %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。
配置详解
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--> <!--日志文件名开头,回滚用Date只需相对路径即可--> <file value="c:\Log\Test.log"/> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<!--文件名静态属性若为true,则日志文件名用<file>属性;否则使用<file>+<datePattern> --> <datePattern value="(yyyyMMdd)"/>
<param name="StaticLogFileName" value="false" />
<!--是否追加到文件,默认为true,通常无需设置--> <appendToFile value="true"/> <!--变换的形式为日期,这种情况下每天只有一个日志--> <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--> <!--<rollingStyle value="Date"/>--> <!--变换的形式为日志大小:Date|Size|Composite-->
<!--Date:根据日期类型(设置单个文件大小无意义);Size:根据文件大小区分;Composite:date与size的结合体--> <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--> <RollingStyle value="Composite"/> <!--每天记录的日志文件个数,与maximumFileSize配合使用--> <MaxSizeRollBackups value="10"/> <!--每个日志文件的最大大小--> <!--可用的单位:KB|MB|GB--> <!--不要使用小数,否则会一直写入当前日志--> <maximumFileSize value="2MB"/>
4、触发配置二选一
a、添加配置语句
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
b、
<add key="log4net.Config" value="log4net.config"/> <add key="log4net.Config.Watch" value="True"/>
5、修改配置文件属性
6、使用公共文件
/// <summary> /// 记录错误日志 /// </summary> /// <param name="message"></param> /// <param name="ex"></param> public static void Error(string message, Exception ex) { ILog log =LogManager.GetLogger("logerror"); if (ex != null) log.Error(message, ex); else log.Error(message); } /// <summary> /// 记录消息日志 /// </summary> /// <param name="message"></param> public static void Info(string message) { ILog log = LogManager.GetLogger("loginfo"); log.Info(message); }