查看文章 |
看了网上很多例子,还是不行,花了一个下午的时间,终于成功了,看来自己解决,理解才是最深的,得到帮助的朋友鼓励一下啊,谢谢
以下有几个要注意的地方(这很有可能就是写不出日志的关键所在) 成功例子一: vs2003建立的asp.net项目,log4net文件放在web.config文件中 1。添加log4net.dll的引用(可以用源码自己生成,无所谓了,下载dll都行) 2。web.config中添加(注意放对位置,在<configuration> 标签下) <configSections>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" > 3。WebForm1.aspx.cs中page_Load中 log4net.ILog log = log4net.LogManager.GetLogger("MyLogger"); 4。在应用程序代码中读取配置(方法有3种,错误的也有一中,注意了) 正确a: 该web项目中的AssemblyInfo.cs文件中添加(注意放对位置,放在命名空间外) [assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)] 正确b: 或则Global.asax.cs中添加(位置也是在命名空间外) [assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)] 正确c: 或则直接在要记录日志的页面文件WebForm1.aspx.cs里写 [assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)] 错误: 注意了:这里,网上很多都说第4步可以在Global.asax中Application_Start里用代码实现, 错误:*************************** 即:log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("Web.Config")); 错误:*************************** 但是我试过了,不行,不知道大家行不行,如果可以,麻烦请告诉我,感激不尽 5。 web项目的WebForm1.aspx.cs Page_Load中 log4net.ILog log = log4net.LogManager.GetLogger("MyLogger"); 成功例子二: vs2005建立的asp.net项目,log4net文件放在web.config文件中 1。同vs2003一样 2。同vs2003一样 3。同vs2003一样 4。在应用程序代码中读取配置(这里vs2005没有AssemblyInfo.cs 文件,所以相比vs2003少了一种方法,又Global.asax前台页面和后台页面在同一文件中,如果在Global.asax任何位置设置都出错, [assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)] ,就只有1种方法了,正确C ) 5。 web项目的WebForm1.aspx.cs Page_Load中 log4net.ILog log = log4net.LogManager.GetLogger("MyLogger"); 成功例子三: vs2005建立的asp.net项目,log4net文件放在单独的配置文件中log4net.config 1。同上(添加引用) 2。在web项目的web.config中添加(位置还是在<configuration> 标签下) <configSections> 3。建立单独的log4net.config配置文件 <?xml version="1.0" encoding="utf-8" ?>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" > 正确c: 或则直接在要记录日志的页面文件WebForm1.aspx.cs里写 [assembly:log4net.Config.DOMConfigurator( ConfigFile="log4net.config",Watch=true)] 这里想一下,一个项目肯定会在很多页面中都要记录日志,所以在每个页面文件里都要写这个及其不方便,也不可能,所以我们改用下一中方案,一般我们的项目也会这么设计
5。 web项目的WebForm1.aspx.cs Page_Load中 log4net.ILog log = log4net.LogManager.GetLogger("MyLogger"); 成功例子四: vs2005建立的asp.net项目,log4net文件放在单独的文件中log4net.config,外加,把日志记录放在单独的一个公共项目中,因为往往项目会设计一个公共层,实现日志记录,缓存管理,加密,安全,等等 这也避免了,成功例子三的缺点,可以只在一个地方读取配置 我们这里添加一个公共项目framework项目 即 [assembly:log4net.Config.DOMConfigurator( ConfigFile="log4net.config",Watch=true)] 1。同上(添加引用)这时是在framework公共项目里添加就ok了, 2。在web项目的web.config中添加(位置还是在<configuration> 标签下) <configSections> 3。建立单独的log4net.config配置文件(最好放在web项目中,方便以后修改) <?xml version="1.0" encoding="utf-8" ?>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" > 4。在应用程序代码中读取配置 [assembly:log4net.Config.DOMConfigurator( ConfigFile="log4net.config",Watch=true)] 方法只有一种,即: 在公共层的AssemblyInfo.cs里面添加 [assembly:log4net.Config.DOMConfigurator( ConfigFile="log4net.config",Watch=true)] 5.在公共层的单独的写日志类中添加 public static void test() 6。在web项目的webFom1.aspx.cs中Page_Load中 framework.Class1.test(); ok.搞定 具体log4net 的设置,我在这里就不用多说了,一为高人在网上翻译的log4net的文章非常详细, 这里可以看到 http://blog.csdn.net/xssh913913/archive/2007/09/04/1772207.aspx |