出處:http://www.dotblogs.com.tw/yuanlin/archive/2012/05/30/72479.aspx
因為最近開始使用到 log4net,特別寫這篇文章記錄一下。
log4net 可以到這裡下載:http://logging.apache.org/log4net/
下載完畢後先將 log4net.dll 加入參考,加入後會在 Bin 資料夾裡面多出 log4net.xml 檔,這個檔案內容非常多,是說明如何撰寫說明檔,有興趣的朋友可以看看,我們這裡先將他刪除。
然後新增一個 xml 格式的檔案,將他命名為 log4net.config ,我將他放在網站根目錄下,log4net.config 的設定
01 |
<? xml version = "1.0" ?> |
02 |
03 |
< log4net > |
04 |
< appender name = "RollingFileAppender" type = "log4net.Appender.RollingFileAppender" > |
05 |
< file value = "LogFiles/" /> <!--存放log檔案的路徑--> |
06 |
< staticLogFileName value = "false" /> |
07 |
< appendToFile value = "true" /> |
08 |
< rollingStyle value = "Date" /> |
09 |
< datePattern value = "yyyyMMdd.lo\g" /> <!--log檔案的命名--> |
10 |
< layout type = "log4net.Layout.PatternLayout" > |
11 |
< conversionPattern value = "%-5p %date{yyyy/MM/dd HH:mm:ss} %-20c{1} %-20M %m%n" /> |
12 |
</ layout > |
13 |
</ appender > |
14 |
< root > |
15 |
< level value = "ALL" /> |
16 |
< appender-ref ref = "RollingFileAppender" /> |
17 |
</ root > |
18 |
</ log4net > |
上面的設定是將 log 檔案以天作分隔從在 LogFiles 資料夾中
再來設定 Global.asax
1 |
void Application_Start( object sender, EventArgs e) |
2 |
{ |
3 |
string log4netPath = Server.MapPath( "~/log4net.config" ); |
4 |
log4net.Config.XmlConfigurator.ConfigureAndWatch( new System.IO.FileInfo(log4netPath)); |
5 |
} |
設定完上面兩個步驟就可以開始使用了
01 |
public partial class _Default : System.Web.UI.Page |
02 |
{ |
03 |
static ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
04 |
05 |
protected void Page_Load(object sender, EventArgs e) |
06 |
{ |
07 |
if (!IsPostBack) |
08 |
{ |
09 |
logger.Info( "現在在 Page_Load 中" ); |
10 |
} |
11 |
} |
12 |
protected void Button1_Click(object sender, EventArgs e) |
13 |
{ |
14 |
logger.Info( "按下 Button1" ); |
15 |
} |
16 |
} |
輸出結果
INFO 2012/05/30 12:18:09 _Default Page_Load 現在在 Page_Load 中
INFO 2012/05/30 12:18:11 _Default Button1_Click 按下 Button1
相關閱讀:
log4net 設定檔的官方範例
log4net 使用指南
log4net 中logger默认日志等级的设计意图详解
log4net的日志输出格式-log4net.Layout.PatternLayout用法
************************************************************************************************************
個人整理出來的重點內容
---------------------------------------------------------------------------------------------------------------------------------
Web.config
<!-- log4net.config檔路徑 -->
<add key="log4netPath" value="D:\Desktop\FtsNet\FTS_TicketByBR\log4net.config" />
---------------------------------------------------------------------------------------------------------------------------------
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
//使用預設的輸出log的等級
//log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
//使用自訂的日誌記錄器logger
log4net.ILog log = log4net.LogManager.GetLogger("DebugMode");
log.Debug("這是debug等級");
log.Info("這是info等級");
log.Warn("這是warn等級");
log.Error("這是error等級");
log.Fatal("這是fatal等級");
}
---------------------------------------------------------------------------------------------------------------------------------
Global.asax
protected void Application_Start(object sender, EventArgs e)
{
//指定log4net.config檔路徑
string log4netPath = ConfigurationManager.AppSettings["log4netPath"].ToString();
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(log4netPath));
}
---------------------------------------------------------------------------------------------------------------------------------
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!--
所有logger的根基,root的設置在所有logger中都起作用。
當在root和logger中重複設定相同的appender時,你會發現同一日誌訊息將被記錄兩次。
-->
<root>
<!--輸出log的等級 All < Debug < Info < Warn < Error < Fatal < Off-->
<!--設定的log等級及其以上的等級才會顯示-->
<!--預設為Info等級,Debug等級的log不會輸出-->
<level value="Info" />
<appender-ref ref="RollingFileAppender" />
</root>
<!--日誌記錄器logger,可以有多個-->
<logger name="DebugMode">
<level value="DEBUG" />
</logger>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles/" /> <!--存放log檔案的路徑-->
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd.\tx\t" /> <!--log檔案的命名-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date{yyyy/MM/dd HH:mm:ss} [%-5level] %file:%line - %message%newline" />
</layout>
</appender>
</log4net>
---------------------------------------------------------------------------------------------------------------------------------