log4net是一个日志记录的开源项目,详情:http://logging.apache.org/log4net/
今上午学习了一下log4net,但是在配置的时候碰到了问题,经过一番折腾,终于搞定,顺利地得到了日志记录。
下面说说我的做法,当然办法肯定不止这一个,我这个算是给新手一个指南 :)
问题是这样的,现在Log4net上公布的是1.2.9版,但是现在网上可以查到的资料都是基于1.2或一下的,这两个版本的不同在于,以前版本使用 log4net.Config.DOMConfigurator进行初始化配置,可是最新版里这个方法被弃用了,sdk文档上建议使用 log4net.Config.XmlConfigurator。可是详细的使用方法却不是很清楚,一开始我是按照以前版本的办法,没有加参数,直接放在 Application_Start方法中,当然不行……可是我对log4net的使用完全不了解,我想得先明确我的xml配置文件及使用方法没有问题。 于是决定先去网上下一个以前版本的。好不容易找到一个,下载,配置……没有问题,哈~这证明就是初始化配置没有问题,于是再把版本换成1.2.9,并且拿 出了厚厚的英文文档,配置着示例程序,终于弄明白该怎么使用。下面是具体的配置办法:
xml配置单独放到一个文件,我起的名字是log4net.config,然后在global.asax.cs中这样作:
protected void Application_Start(Object sender, EventArgs e)
{
//配置log4net
log4net.Config.XmlConfigurator.Configure( new FileInfo("log4net.config") );
}
使用一个FileInfo对象来指定配置文件,然后还需要加一个程序集特性
[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]
这个是用来指定我们使用了另外的xml配置文件。
完成这两步就没有问题了。
下面说说这个的使用,初用这个时候可能会被那一大堆文档和配置节吓倒,其实如果是简单应用的话,就一点也不麻烦,像我现在在stella2中的用法,现确 定你要用什么来记录日志,比如我是把日志记录在数据库中,那就到文档中去查找这方面的配置示例,之后完整的复制到你的配置文件中就可以用了,呵呵
在这里有一点要注意:
<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>
最好是在logger节里预先取好名字,然后就可以很方便的使用,比如我这个
public class Logger : IServices.ILogger
{
//使用自己取得名字
private static log4net.ILog log=log4net.LogManager.Exists("StellaLogger");
public void LogMessage(string msg)
{
log.Info(msg);
}
void Stella2.IServices.ILogger.LogException(string note, Exception exp)
{
log.Warn(note,exp);
}
void Stella2.IServices.ILogger.DebugTime(string note, Exception exp)
{
log.Debug(note,exp);
}
}
/// <summary>
/// 记录一条信息到日志
/// </summary>
/// <param name="msg">信息</param>
public static void LogMessage(string msg)
{
IServices.ILogger logger=Factory.ServicesFactory.GetLogger();
logger.LogMessage(msg);
}