学习在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的级别、日志保存路径、名称等,无需重启站点立马生效。
在项目的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的级别、日志保存路径、名称等,无需重启站点立马生效。
相关文章推荐
- 在ASP.NET web 站点中使用log4net (1.2.9)
- Android学习-使用WebView在app上显示网页
- Java EE 学习(2):使用 IDEA 开发 最简java web
- iOS学习之WebView的使用
- 使用yeoman搭建react-webpack框架的学习
- 日志框架学习(4)— Web项目中使用Log4j实例
- Android学习之 WebView使用小结
- 不错的maven学习笔记,收藏——Maven学习 (三) 使用m2eclipse创建web项目
- IOS 开发学习34 使用webview
- Android学习 - WebView组件的使用详解
- Java for Web学习笔记(五一):Log(3)代码中使用log4j2
- 【学习笔记】maven下多个web项目使用maven-war-plugin需要注意的问题
- IOS学习之SDWebImage使用和优化
- Maven学习 (三) 使用m2eclipse创建web项目
- log4net 使用学习 及代码实例(转载的)
- Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)
- asp.net Web项目中使用Log4Net进行错误日志记录
- Maven学习 (三) 使用m2eclipse创建web项目
- Log4Net的控制台,WinForm,WebApplication使用
- webpack学习之一,基本使用和管理资源