您的位置:首页 > 其它

学习在Web中使用log4net(转)

2009-07-20 09:53 295 查看
由于打算在近期的项目量使用log4net,于是上网搜了一堆相关文档,自己动手写示例时却发现运行结果总是与网上的不尽相同,主要在如下二点: 1.配置文件的读取

在项目的AssemblyInfo.cs文件里添加以下的语句

[assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",Watch=true/false)]

filename的值是配置文件的路径,Watch的值表示是否实时反映配置文件的修改。

或者动态加载

DOMConfigurator.[Configure/ConfigureAndWatch](new FileInfo("filename"));

Configure/ConfigureAndWatch的区别在于是否实时反映配置文件的修改。

在2.0及以后推荐将"DOMConfigurator"改为"XmlConfigurator",但是2.0及以后的Web项目是没 有"AssemblyInfo.cs"文件的,总不能在每个需要使用log4net的类中都加上面那二行代码。针对这种情况,网上也有二种解决办法: (1)新建类库继承log4,用 [assembly]方式加载配置,Web项目再引用类库;(2)在Global文件中动态加载配置。个人认为log4net提供的方法已经鸲用了,没有 必要再去继承,推荐使用第(2)种。

2.多种Appender的使用

网上有类似这样的配置

log4net.config

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="XxxxApplication.log.txt" />
<param name="datePattern" value="MM-dd HH:mm" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" type="" value="log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

*.cs

Log4net.ILog log = Log4net.LogManager.GetLogger("MyLogger");

log.Debug("message");

上面的执行结果是二种Appender定义的日志文件中都出现了一行日志。

应该在配置文件应该为每一种介质都用<logger>标签定义一个名字。

修改后的文件如下:

log4net.config(不需要在web.config中作任何关于log4net的配置)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<root>
<level value="INFO" />
</root>
<logger name="AA">
<appender-ref ref="LogRollingFile" />
</logger>
<logger name="BB">
<appender-ref ref="LogFile" />
</logger>
<logger name="CC">
<appender-ref ref="LogFile1" />
</logger>
<appender name="LogFile" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
</layout>
</appender>
<appender name="LogFile1" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file1.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
</layout>
</appender>
<appender name="LogRollingFile" type="log4net.Appender.RollingFileAppender" >
<param name="File" type="" value="log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
<param name="Header" value="----------------------header--------------------------\r\n" />
<param name="Footer" value="----------------------footer--------------------------\r\n" />
</layout>
</appender>
</log4net>
</configuration>

Global.asax

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.IO.FileInfo infoF = new System.IO.FileInfo("配置文件的实际路径");
log4net.Config.XmlConfigurator.ConfigureAndWatch(infoF);//使用ConfigureAndWatch
}

*.cs

protected void FileAppender_Click(object sender, EventArgs e)
{
log4net.ILog logger = log4net.LogManager.GetLogger("BB");
logger.Info("...LogFile...");
}
protected void FileAppender1_Click(object sender, EventArgs e)
{
log4net.ILog logger = log4net.LogManager.GetLogger("CC");
logger.Info("...LogFile...");
}
protected void RollingFileAppender_Click(object sender, EventArgs e)
{
log4net.ILog logger = log4net.LogManager.GetLogger("AA");
logger.Info("...LogRollingFile...");
}

再在系统中增加日志配置的页面,动态的修改log4net .config中每种appender的级别、日志保存路径、名称等,无需重启站点立马生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: