用log4net快速構建asp.net 異常日誌

log4net是一個很是完善的日誌組件. 有着強大的可配置性. 有助於提升開發效率 。log4net是apache組織開發的日誌組件, 同其姐妹log4j同樣,
是一個開源項目. 能夠以插件的形式應用在你的系統中. 下面僅說明如何應用在web forms項目中. 作爲主要的日誌輸出組件.

第一步:應該下載log4net.dll並引入到你的項目中,下載見附件

第二步:修改你的global.asa.cs. 配置application對象啓動的時候加載log4net配置
protected void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}

第三步:在web.cofig根節點 configuration 中加入以下section
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

第四步:在web.cofig增長配置節點
<log4net>
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File" value="E:\\Log\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n異常時間:%d [%t] &lt;BR&gt;%n異常級別:%-5p
&lt;BR&gt;%n異 常 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
此節點將在參數 <param name="File" 所指定的目錄下生成以日期爲文件名的日誌文件,請自行根據實際狀況修改。
如: 2005年2月3日,則在目錄下生成 20050203.htm 的日誌文件。

第五步:在程序中寫入日誌
如下例子是在Global.asax的 Application_Error 方法裏捕捉全部異常寫入當天日誌。在其餘頁面的代碼裏頁能夠這麼寫入。

先實例化:private static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
而後在Application_Error方法中寫自定義消息:
protected void Application_Error(Object sender, EventArgs e)
{
log.Info("\r\n客戶機IP:"+ Request.UserHostAddress +"\r\n<BR>錯誤地址:"+ Request.Url,
Server.GetLastError());
}


通過以上5個步驟就可以在很短的時間內完成站點的異常日誌工做,常常查看日誌能夠發現咱們程序中的不足並且能夠發現一些惡意訪問的記錄,而後作出相應的措施。




補充一下,若是須要用log4net同時記錄操做日誌和異常日誌,而且但願把他們存儲在不一樣的地方(文件或者數據庫),能夠這樣處理,這裏以文件爲例。

首先更改配置文件
增長logger配置節,
<logger name="logerror">

<level value="ERROR" />

<appender-ref ref="RollingLogFileAppender" />

</logger>

<logger name="loginfo">

<level value="INFO" />

<appender-ref ref="InfoAppender" />

</logger>根據須要能夠定義多個,
設置各個log對應的級別,並補充每一個appender所對應的節點
<appender name="RollingLogFileAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\AppLog\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n異常時間:%d [%t]
&lt;BR&gt;%n異常級別:%-5p

&lt;BR&gt;%n異 常 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>



<appender name="InfoAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\App\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n日誌時間:%d [%t]
&lt;BR&gt;%n日誌級別:%-5p

&lt;BR&gt;%n日 志 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>


在cs文件裏定義多個log實例,
public static readonly log4net.ILog loginfo =
log4net.LogManager.GetLogger("loginfo");

public static readonly log4net.ILog logerror =
log4net.LogManager.GetLogger("logerror");

做爲操做日誌和異常日誌的操做對象,
根據級別,進行操做
if(loginfo.IsInfoEnabled)
loginfo.Info("新增文章成功!");

if(logerror.IsErrorEnabled)
logerror.Error("新增文章出錯!",se);



參考文檔

http://www.ondotnet.com/pub/a/dotne...net.html?page=1
html





配置的樣例
http://logging.apache.org/log4net/r...g-examples.html

生成文件的格式有三種 1。按日期 2。按文件大小 3。同時按日期和文件大小 關鍵節點 <param name="MaxFileSize" value="10240" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMddHH&quot;.htm&quot;" /> <param name="RollingStyle" value="Composite" /> 文件大小的單位是字節,
相關文章
相關標籤/搜索