因为生产环境中没办法进行调试,在程序中又没有进行日志记录,所以现在想在程序中用log4net进行日志记录,由于配置文件中配置log4net的内容比较多,所以在这里记录以下。
一、安装log4net
1.网上进行下载,在项目中进行引用,地址:http://logging.apache.org/log4net/download_log4net.cgi;
2.VS中可以在nuget中搜索log4net进行安装
二、在项目中进行配置
1.在应用程序配置文件中(App.config或web.config)中添加上配置信息
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections>
这一部分是让配置文件支持log4net节点部分的解析,用到的是自定义节点知识(可惜本人也没搞太清楚,知道怎么用就好了)
<log4net> <logger name="TerminalLogger"> <Level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </logger> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <File value="Log.txt" /> <AppendToFile value="true" /> <DatePattern value="yyyyMMddHHmmss" /> <RollingStyle value="Size" /> <MaxSizeRollBackups value="10" /> <MaximumFileSize value="1MB" /> <StaticLogFileName value="true" /> <Encoding value="UTF-8" />我的例子中是记录文件以及输出到控制台中进行记录日志,logger节点是确定你的日志实例名称以及启用的记录类型,appender是设置各个记录类型的记录方式。<!--最小锁定模型以允许多个进程可以写入同一个文件--><LockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%-5p %d %5rm %-22.22c{1} %-18.18M - %m%n"/>--> <!--<conversionPattern value="记录时间:%d 线程ID:[%t] 记录级别:%-5p 错误位置:%c在%F文件中(%l) property:[%property{NDC}] - 错误描述:%m%n"/>--> <conversionPattern value="记录时间:%d 线程ID:[%t] 记录级别:%-5p 错误位置:%l property:[%property{NDC}] - 错误描述:%m%n" /> </layout> </appender> <!-- Console部分log输出格式的设定 --> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" /> </layout> </appender> </log4net>
设置LockingModel的值时,最后不清楚为什么是FileAppender+MinimalLock,我试过用“.”代替“+”,但获取日志对象会出错。
layout节点用来设置输出的日志格式。具体可以参考文章:http://www.cnblogs.com/zhangchenliang/p/4546352.html,介绍比较全面。