1、在根目录创建log4net.config后,把下面代码复制进去
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- Level的级别,由高到低 --> <!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL--> <!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中--> <log4net> <!--错误日志类--> <logger name="logerror"> <!--日志类的名字--> <level value="ALL" /> <!--定义记录的日志级别--> <appender-ref ref="ErrorAppender" /> <!--记录到哪个介质中去--> </logger> <!--错误日志附加介质--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质--> <param name="File" value="Log\\" /> <!--日志输出到exe程序这个相对目录下--> <param name="AppendToFile" value="true" /> <!--输出的日志不会覆盖以前的信息--> <param name="MaxSizeRollBackups" value="100" /> <!--备份文件的个数--> <param name="MaxFileSize" value="10240" /> <!--当个日志文件的最大大小--> <param name="StaticLogFileName" value="false" /> <!--是否使用静态文件名--> <param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" /> <!--日志文件名--> <param name="RollingStyle" value="Date" /> <!--文件创建的方式,这里是以Date方式创建--> <!--错误日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="====================%n异常时间:%d %n异常级别:%-5p%n异常信息:%m%n====================%n" /> </layout> </appender> </log4net> </configuration>
2、如果多种类型要分文件夹存放那么重新在上一个appender结尾再添加一个appender,再上一个logger结尾再加一个logger即可
<!--信息日志类--> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> </logger>
<!--信息日志附加介质--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" /> <param name="RollingStyle" value="Date" /> <!--信息日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="====================%n异常时间:%d %n异常级别:%-5p%n异常信息:%m%n====================%n" />
</layout>
</appender>
3、log4net.config文件属性中,设置复制到输出目录为如果较新则复制
4、在AssemblyInfo.cs文件中加入这条语句
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
5、创建实际操作的LogHelper类,其中代码如下:(其中的logerror对应logger中的name值,)
public static ILog log = log4net.LogManager.GetLogger("logerror"); public static void Error(string msg) { log.Error(msg); }
6、调用即可,LogHelper.Error("出现错误啦");
7、补充:
MaxFileSize 最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。
RollingStyle是文件创建的方式。上例中市设置为以Date方式创建新文件。
DatePattern 日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件。
MaxSizeRollBackups这个属性用来设置,当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013-10-28,那么今天创建的日志文件名就是20131028.htm,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.htm改名为20131028.htm.1,并创建一个新的20131028.htm文件。
StaticLogFileName的值如果为true,则当前日志文件(相对于历史日志文件而言)的文件名只取File参数。如果为false,则文件名取File+DatePattern。
8、补充:
%m、%message 输出的日志消息
%d、%datetime 输出当前语句运行的时刻,格式%date{yyyy-MM-dd HH:mm:ss,fff}
%r、%timestamp 输出程序从运行到执行到当前语句时消耗的毫秒数
%p、%level 日志的当前优先级别
%c、%logger 当前日志对象的名称
%L、%line 输出语句所在的行号
%F、%file 输出语句所在的文件名,警告:只在调试的时候有效,调用本地信息会影响性能
%a、%appdomain 引发日志事件的应用程序域的名称。
%C、%class、%type 引发日志请求的类的全名,警告:会影响性能
%exception 异常信息
%u、%identity 当前活动用户的名字,我测试的时候%identity返回都是空的。警告:会影响性能
%l、%location 引发日志事件的名空间、类名、方法、行号。警告:会影响性能,依赖pdb文件
%M、%method 发生日志请求的方法名,警告:会影响性能
%n、%newline 换行符
%x、%ndc NDC(nested diagnostic context)
%X、%mdc、%P、%properties 等介于 %property
%property 输出{log4net:Identity=, log4net:UserName=, log4net:HostName=}
%t、%thread 引发日志事件的线程,如果没有线程名就使用线程号。
%w、%username 当前用户的WindowsIdentity,类似:HostName/Username。警告:会影响性能
%utcdate 发生日志事件的UTC时间。例如:%utcdate{HH:mm:ss,fff}
%% 输出一个百分号
浙公网安备 33010602011771号