(24)C#log4net配置和使用
一、下载并引用log4
DLL下载 http://logging.apache.org/
找到.net版本的
点击下载
找到编译好的bin
选择net
选择你项目对应的.net framework版本
里面的DLL就是我们要用的文件,
把他引用到项目中
引入命名空间
二、配置APPconfig
1、创建APPconfig
配置APPconfig
在工程名上右键-添加-新建项,找到应用程序配置文件,默认名App.config
创建成功后默认代码如下,所有的配置都要写在<configuration></configuration>之间
<?xml version="1.0" encoding="utf-8" ?> <configuration>
</configuration>
2、<log4net></log4net>里有五个子元素
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <root></root> <logger></logger> <appender></appender> <layout></layout> <param></param> </log4net> </configuration>
三、控制台输出日志
1、新建并配置APP.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> </root> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> </layout> </appender> </log4net> </configuration>
2、
默认的APP.config编译后文件是和bin文件夹在同一级的
选中APP.config右键属性-把复制到输出目录设置为始终复制,这样就拷贝了一份config文件到bin里
3、关联APP.config文件
打开工程Properties文件夹下的AssemblyInfo.cs 加入代码
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]
如果控制台不输出日志,去掉configFile
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
4、控制台代码
using System; using System.Collections.Generic; using System.Text; using log4net; namespace log4 { class Program { static void Main(string[] args) { ILog log = LogManager.GetLogger("ConsoleAppender"); log.Info("测试"); Console.ReadKey(); } } }
四、文件输出日志
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="Log.log" /> <Layout type="log4net.Layout.PatternLayout"> </Layout> </appender> <root> <level value="ALL" /> <appender-ref ref="FileAppender" /> </root> </log4net> </configuration>
运行三次
五、数据库记录日志
六、记录多个日志文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <logger name="Logging"> <level value="ALL"/> <appender-ref ref="RollingFileAppender_INFO"/> <appender-ref ref="RollingFileAppender_WARN"/> </logger> <!--记录INFO方法的日志--> <appender name="RollingFileAppender_INFO" type="log4net.Appender.RollingFileAppender"> <file value="./Log/INFO." /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="yyyyMMdd" /> <Encoding value="UTF-8" /> <param name="maximumFileSize" value="80MB" /> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[%d] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!--记录WARN方法的日志--> <appender name="RollingFileAppender_WARN" type="log4net.Appender.RollingFileAppender"> <file value="./Log/WARN." /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="yyyyMMdd" /> <Encoding value="UTF-8" /> <param name="maximumFileSize" value="80MB" /> <maxSizeRollBackups value="10" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[%d] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> </log4net> </configuration>
ILog log = LogManager.GetLogger("Logging"); log.Info("测试1"); log.Warn("测试2"); Console.ReadKey();
七、log4j.appender.appender1.layout.ConversionPattern=日志输出格式
- 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
- %c 输出日志信息所属的类的全名
- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
- %f 输出日志信息所属的类的类名
- %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
- %m 输出代码中指定的信息,如log(message)中的message
- %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
- %r 输出自应用启动到输出该日志信息所耗费的毫秒数
- %t 输出产生该日志事件的线程名
参考文档:
http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html
http://www.cnblogs.com/zhangchenliang/p/4546352.html
等