將 log4net 設定抽離成獨立的 log4net.config,不要和 web.config 混寫在一起;透過組件屬性自動載入組態。
1 建立 log4net.config
放置到網站根目錄
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--日誌輸出至txt檔案-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日誌根目錄:網站根目錄/logs-->
<param name="File" value="logs\\" />
<!--採用附加模式寫入檔案-->
<param name="AppendToFile" value="true" />
<!--最多保留10份備份日誌-->
<param name="MaxSizeRollBackups" value="10" />
<!--檔名依日期動態產生,不使用固定名稱-->
<param name="StaticLogFileName" value="false" />
<!--目錄結構 logs/yyyy/MM/yyyy-MM-dd.log -->
<param name="DatePattern" value="yyyy\\MM\\yyyy-MM-dd".log"" />
<!--依照日期輪轉日誌檔-->
<param name="RollingStyle" value="Date" />
<!--日誌輸出格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!--根記錄器,綁定輸出元件-->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
2 修改 AssemblyInfo.cs 完成初始化
開啟專案內 Properties/AssemblyInfo.cs,在檔案最末尾貼上:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]Code language: JSON / JSON with Comments (json)
ConfigFile="log4net.config":指定獨立組態檔位置(網站根目錄)Watch=true:開啟熱載入,修改 log4net.config 不用重啟網站即可立即生效
3 頁面呼叫範例程式碼
using log4net;
public partial class Default : System.Web.UI.Page
{
// 建立日誌執行個體
public ILog log = LogManager.GetLogger("Default.aspx頁面專用記錄器");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("一般資訊日誌");
log.Error("錯誤日誌");
log.Debug("偵錯資訊");
}
}
獨立組態檔