來源:http://hi.baidu.com/cyap/blog/item/814ea2010993fc0a7aec2c3c.html
看了網上很多例子,還是不行,花了一個下午的時間,終於成功了,看來自己解決,理解纔是最深的,得到幫助的朋友鼓勵一下啊,謝謝
以下有幾個要注意的地方(這很有可能就是寫不出日誌的關鍵所在)
成功例子一:
vs2003建立的asp.net項目,log4net文件放在web.config文件中
1。添加log4net.dll的引用(可以用源碼自己生成,無所謂了,下載dll都行)
2。web.config中添加(注意放對位置,在<configuration> 標籤下)
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"
/>
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" 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] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
3。WebForm1.aspx.cs中page_Load中
log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
log.Debug("hello");
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");
log.Debug("hello");
成功例子二:
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");
log.Debug("hello");
成功例子三:
vs2005建立的asp.net項目,log4net文件放在單獨的配置文件中log4net.config
1。同上(添加引用)
2。在web項目的web.config中添加(位置還是在<configuration> 標籤下)
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
</configSections>
3。建立單獨的log4net.config配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"
/>
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" 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] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
4。在應用程序代碼中讀取配置(道理同上,只有1種正確方法,但是這裏Web.Config改成了log4net.config)
正確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");
log.Debug("hello");
成功例子四:
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>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
</configSections>
3。建立單獨的log4net.config配置文件(最好放在web項目中,方便以後修改)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"
/>
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" 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] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
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()
{
log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
log.Debug("hello");
}
6。在web項目的webFom1.aspx.cs中Page_Load中
framework.Class1.test();
ok.搞定
具體log4net 的設置,我在這裏就不用多說了,一爲高人在網上翻譯的log4net的文章非常詳細,
這裏可以看到
http://blog.csdn.net/xssh913913/archive/2007/09/04/1772207.aspx