Log4Net使用指南
来源:互联网 发布:网络安全法是为了维护 编辑:程序博客网 时间:2024/05/21 15:45
主要参考:
http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
http://www.cnblogs.com/neekerss/archive/2011/01/04/1925171.html
Level有以下几种取值
级别
允许的方法
Boolean属性
优先级别
OFF
Highest
FATAL
void Fatal(...);
bool IsFatalEnabled;
RROR
void Error(...);
bool IsErrorEnabled;
WARN
void Warn(...);
bool IsWarnEnabled;
INFO
void Info(...);
bool IsInfoEnabled;
DEBUG
void Debug(...);
bool IsDebugEnabled;
ALL
Lowest
表1 Logger的日志级别
在config文件中添加以下的语句
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" /> </configSections> <log4net> <root> <level value="WARN" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name="testApp.Logging"> <level value="DEBUG"/> </logger> <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="log-file.txt" /> <param name="AppendToFile" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="Header" value="[Header]\r\n"/> <param name="Footer" value="[Footer]\r\n"/> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> </log4net></configuration>
log4net.Layout.PatternLayout中的转换模式(ConversionPattern)
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
模式字符串为:%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);log.Debug(“Hello”);
则输出为下面的形式:
Exam.Log - Hello
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:
176 [main] INFO org.foo.Bar - Located nearest gas station.
在项目的AssemblyInfo.cs文件里添加以下的语句
[assembly:log4net.Config.DOMConfigurator(ConfigFile="filename", ConfigFileExtension="ext",Watch=true/false)]
或
[assembly: log4net.Config.DOMConfigurator()]
或
[assembly: log4net.Config.XmlConfigurator()]
用如果需要日志文件名不固定,可用程序声明 log 或用以下方法, 或 用 RollingLogFileAppender
在程序中配置log4net
除了前面讲的用一个配置文件来配置log4net以外,还可以在程序中用代码来配置log4net框架。如下面的例子:
如 用此方法声明文件名,则需去除配置文件中文件名的声明,否则会产生两个文件.
// 和PatternLayout一起使用FileAppender log4net.Config.BasicConfigurator.Configure( new log4net.Appender.FileAppender( new log4net.Layout.PatternLayout("%d [%t]%-5p %c [%x] - %m%n"),"testfile.log")); // using a FileAppender with an XMLLayoutlog4net.Config.BasicConfigurator.Configure( new log4net.Appender.FileAppender( new log4net.Layout.XMLLayout(),"testfile.xml")); // using a ConsoleAppender with a PatternLayoutlog4net.Config.BasicConfigurator.Configure( new log4net.Appender.ConsoleAppender( new log4net.Layout.PatternLayout("%d [%t] %-5p %c - %m%n"))); // using a ConsoleAppender with a SimpleLayoutlog4net.Config.BasicConfigurator.Configure( new log4net.Appender.ConsoleAppender(new log4net.Layout.SimpleLayout()));
动态修改log4net组件的日志文件名
http://www.cnblogs.com/haptear/archive/2006/11/29/431351.html
private void ChangeLog4netLogFileName(log4net.ILog iLog,string fileName) { log4net.Core.LogImpl logImpl= iLog as log4net.Core.LogImpl; if(logImpl!=null) { log4net.Appender.AppenderCollection ac=((log4net.Repository.Hierarchy.Logger)logImpl.Logger).Appenders; for(int i=0;i<ac.Count;i++) { //这里我只对RollingFileAppender类型做修改 log4net.Appender.RollingFileAppender rfa = ac[i] as log4net.Appender.RollingFileAppender; if(rfa!=null) { rfa.File = fileName; if(!System.IO.File.Exists(fileName)) { System.IO.File.Create(fileName); } //更新Writer属性 rfa.Writer=new System.IO.StreamWriter(rfa.File,rfa.AppendToFile,rfa.Encoding); } } } }
ok,让我们测试一下
private void TestChangeLog4netLogFileName() { string fileName = @"c:\chang.log"; log4net.ILog iLog = log4net.LogManager.GetLogger("AppLogger"); ChangeLog4netLogFileName(iLog, fileName); iLog.Info("Test:info"); }
下面是以日期为文件名:
http://hi.baidu.com/xtuwangzhi/blog/item/35cac05568e68453d00906f9.html
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" /> </configSections> <log4net> <root> <level value="Debug" /> <appender-ref ref="RollingLogFileAppender" /> </root> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志文件名开头--> <param name="File" value="c:\\" /> <!--是否追加到文件--> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="10" /> <param name="StaticLogFileName" value="false" /> <!--日志文件格式--> <param name="DatePattern" value="yyyyMMdd'.log'" /> <!--按照文件的大小进行变换日志文件--> <!--<param name="RollingStyle" value="Size" />--> <!--我这里按照日期--> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n%n" /> </layout> </appender> </log4net></configuration>
下面是RollingFileAppender类中的部分Public Instance Properties(公共属性)的说明,没有全部测试,难免谬误,如果你知道,请不要吝啬告写。
CountDirection : 定义当前文件是最小编号的文件还是最大编号的文件。默认为-1,总是以更小的编号。
datePattern : DateFormatter日期格式,string类型。
Encoding : 就是文件的编码,默认为Default,就是程序本身的编码了。
FilterHead : 分割符头部。
ImmediateFlush : 表示是否立即输出到文件,布尔型的。
LockingModel : 文件锁类型,RollingFileAppender本身不是线程安全的,如果在程序中没有进行线程安全的限制,可以在这里进行配置,确保写入时的安全。有两中类型:FileAppender.ExclusiveLock 和 FileAppender.MinimalLock
Name : 设置本Appander的名称。
SecurityContext : 比较少应用,对日志进行加密只类的,使用SecurityContextProvider转换。(对日志的保密要求比较高的时候应该可以应用上吧,Log4考虑的还挺周全)
Threshold : 设置内容级别的,比如:DEBUG,INFO等等。
按大小自动切割多个文件的方法:
<?xml version="1.0" encoding="utf-8"?><log4net><!--OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL--><!--Set root logger level to ERROR and its appenders--><root><levelvalue="ALL"/><appender-refref="SysAppender"/></root><!-- Print only messages of level DEBUG or above in the packages--><loggername="WebLogger"><levelvalue="DEBUG"/></logger><appendername="SysAppender" type="log4net.Appender.RollingFileAppender"><paramname="File" value="App_Data\Logs.txt"/><paramname="AppendToFile" value="true"/><paramname="MaxSizeRollBackups" value="12"/><!-- 切割最多文件数--><paramname="MaximumFileSize" value="500KB"/><!-- 每个文件的大小--><paramname="RollingStyle" value="Size"/><paramname="StaticLogFileName" value="true"/><layouttype="log4net.Layout.PatternLayout"><paramname="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/></layout></appender></log4net>
- Log4Net使用指南
- log4net使用指南
- log4net 使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Log4Net使用指南
- Oracle语句优化规则汇总(1)
- 日文系统 中文软件 系统乱码
- sharepoint 使用feature 是用到的一些命令
- QT中PRO文件写法的详细介绍
- Android Audio System
- Log4Net使用指南
- ruby-数据类型-数值型
- Java加解密密和数字签名
- 领袖人物的16个主要特征
- c++中的虚函数
- 从PDA到Android 智能手机的十年进化论
- 使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
- 生成唯一的ID
- 虚析构函数的作用