log4net 虽然是开源项目,但是似乎不是很活跃,最近的更新是3个月前的。
nlog 11月6日刚刚更新,但是似乎只有一个人在维护。
日志效率问题
exception日志不完全的问题。
封装之后,程序中其他地方,都引用我们自己的Logger的类。
新建logger类 Cas.Logger,其中主要包括,GetLogger,以及Debug,INFO等记日志的方法
在代码中使用方法如下:
首先得到本类的logger,然后使用记录日志
ATM只是使用3个logger,SYS,Component,DEBUG,Error,使用一个类的静态方法,这样的好处是使用起来比较方便,buxuyao 。但是我考的弊端是,会不会不能很好的使用log4net的分级并且记录log的发生地址。
我们还是在我们的bin目录下加入log4net,不需要在我们的类中加入log4net的源码。log4net的源码我们可以获得,如果需要,我们可以自己定制。
缺点:不能使用log4net的按照类名字结构的log分级,就不能使用filter进行过滤。
使用静态方法,固定封装,静态得到需要logger,延续ILog所有方法,所有方法都为静态方法。
a. 在程序中指定一个文件名,如:
b. 使用.net的工程资源文件App.config,这样会生成一个后缀为.config的配置文件
c. 用accemblyinfo指定log4net配置文件的后缀名,在类中加入:
d. 写在web.config文件中
Web.config,然后在globab.asxa.cs中Application_start中读取
数据库 AdoNetAppender
内存 BufferingForwardingAppender 先缓存在内存,然后定时写入文件或者数据库。
两种输出,文件,数据库。
这两种方式都要缓存输出。
nlog 11月6日刚刚更新,但是似乎只有一个人在维护。
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log4net介绍文章参考如下网页:
http://hi.baidu.com/feifeiaini1/blog/item/8041399743460e6754fb964b.html
http://toyota2006.javaeye.com/blog/255978
http://wangdeshui.javaeye.com/blog/275517
需求
解决并发时日志文件访问慢,冲突的问题日志效率问题
exception日志不完全的问题。
已经解决的问题:
支持平台
log4net大部分功能支持.net 1.0 1.1 2.0 以及大于2.0的所有.net版本。log输出地址
log4net可以支持往文件,数据库(支持sybase)以及内存缓存中写入log主要问题:
如何封装
使用我们自己的类封装log4net的接口,这样可以屏蔽log4net的变化,并且以后如果不用log4net,而转到其他log类库中,只需要修改我们封装的几个类的实现,不需要修改系统的其他代码。封装之后,程序中其他地方,都引用我们自己的Logger的类。
新建logger类 Cas.Logger,其中主要包括,GetLogger,以及Debug,INFO等记日志的方法
在代码中使用方法如下:
首先得到本类的logger,然后使用记录日志
private static readonly Cas.Logger logger = Cas.Logger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
...
...
logger.Debug("This is debug in {0}", classname);
ATM只是使用3个logger,SYS,Component,DEBUG,Error,使用一个类的静态方法,这样的好处是使用起来比较方便,buxuyao 。但是我考的弊端是,会不会不能很好的使用log4net的分级并且记录log的发生地址。
我们还是在我们的bin目录下加入log4net,不需要在我们的类中加入log4net的源码。log4net的源码我们可以获得,如果需要,我们可以自己定制。
缺点:不能使用log4net的按照类名字结构的log分级,就不能使用filter进行过滤。
使用静态方法,固定封装,静态得到需要logger,延续ILog所有方法,所有方法都为静态方法。
使用何种配置文件读取方式
当前应该有3种a. 在程序中指定一个文件名,如:
XmlConfigurator.Configure(new FileInfo(ManageMonitorServer.GetServiceBasePath() + "log4net.config"));b. 使用.net的工程资源文件App.config,这样会生成一个后缀为.config的配置文件
c. 用accemblyinfo指定log4net配置文件的后缀名,在类中加入:
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "log4net", Watch = true)]d. 写在web.config文件中
Web.config,然后在globab.asxa.cs中Application_start中读取
使用哪种log输出(Appender)方式
文件 RollingFileAppender 按照一定的规则,限定日志文件的组织。可以限制文件最大大小,或者按照时间记录文件,或者混着这两种方式。数据库 AdoNetAppender
内存 BufferingForwardingAppender 先缓存在内存,然后定时写入文件或者数据库。
两种输出,文件,数据库。
这两种方式都要缓存输出。
日志记录格式
使用StringFormat的方式,对于变量使用[%s]类似的功能。log4net注意事项
YourName, 2009年12月14日 (创建于 2009年12月14日)
多线程同时访问一个log文件,出现冲突,文件名会改变。
需要设置
使用Web.config配置时,要在程序中载入配置文件,只需要运行一次
需要设置
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />使用Web.config配置时,要在程序中载入配置文件,只需要运行一次
log4net.Config.XmlConfigurator.Configure();
RollingFileAppender
3中rolling方式
1. Size 文件大小
文件大小,一定要有
2. Date 日期
3. Composite 综合
1. Size 文件大小
文件大小,一定要有
<maxSizeRollBackups value="10" />,并且默认的文件大小单位是MB2. Date 日期
3. Composite 综合
浙公网安备 33010602011771号