Log4net是Apache log4j框架在Microsort.NET平臺實現的框架. 幫助程式員將日誌信息輸出到各種目標(控制台,資料庫,文件等) 1.新建一個ASP.NET項目 2.新建一個 log4net.config 文件,用來放置日誌的配置,為什麼不寫在在web.Config中呢,主要是 ...
Log4net是Apache log4j框架在Microsort.NET平臺實現的框架.
幫助程式員將日誌信息輸出到各種目標(控制台,資料庫,文件等)
1.新建一個ASP.NET項目
2.新建一個 log4net.config
文件,用來放置日誌的配置,為什麼不寫在在web.Config中呢,主要是因為這樣更加清晰,明瞭,不會那麼的混亂
打開log4net.config文件,將下麵的配置複製進去
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2" /> </system.web> <log4net> <!--錯誤日誌:::記錄錯誤日誌--> <!--按日期分割日誌文件 一天一個--> <!-- appender 定義日誌輸出方式 將日誌以回滾文件的形式寫到文件中。--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--保存路徑:下麵路徑項目啟動的時候自動在C盤中創建log、logError文件--> <file value="Content\\LogError"/> <!-- 如果想在本項目中添加路徑,那就直接去掉C:\\ 只設置log\\LogError 項目啟動中預設創建文件 --> <appendToFile value="true"/> <!--按照何種方式產生多個日誌文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date"/> <!--這是按日期產生文件夾--> <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/> <!--是否只寫到一個文件中--> <staticLogFileName value="false"/> <!--保留的log文件數量 超過此數量後 自動刪除之前的 好像只有在 按Size分割時有效 設定值value="-1"為不限文件數--> <param name="MaxSizeRollBackups" value="100"/> <!--每個文件的大小。只在混合方式與文件大小方式下使用。超出大小後在所有文件名後自動增加正整數重新命名,數字最大的最早寫入。可用的單位:KB|MB|GB。不要使用小數,否則會一直寫入當前日誌--> <maximumFileSize value="1GB" /> <!-- layout 控制Appender的輸出格式,也可以是xml 一個Appender只能是一個layout--> <layout type="log4net.Layout.PatternLayout"> <!--每條日誌末尾的文字說明--> <!--輸出格式 模板--> <!-- <param name="ConversionPattern" value="記錄時間:%date 線程ID:[%thread] 日誌級別:%-5level 記錄類:%logger 操作者ID:%property{Operator} 操作類型:%property{Action}%n 當前機器名:%property%n當前機器名及登錄用戶:%username %n 記錄位置:%location%n 消息描述:%property{Message}%n 異常:%exception%n 消息:%message%newline%n%n" />--> <!--樣例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <!--<conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n日誌級別: %-5level %n錯誤描述:%message%newline %n"/>--> <conversionPattern value="%n========== %n【日誌級別】%-5level %n【記錄時間】%date %n【線程編號】[%thread] %n【執行時間】[%r]毫秒 %n【出錯文件】%F %n【出錯行號】%L %n【出錯的類】%logger 屬性[%property{NDC}] %n【錯誤描述】%message %n【錯誤詳情】%newline"/> </layout> </appender> <!--Error日誌::: 錯誤日誌--> <logger name="logerror"> <level value="ERROR" /> <appender-ref ref="ErrorAppender" /> </logger> </log4net> </configuration>
3.打開Properties中的Assemblyinfo.cs
將代碼放進去, AssemblyInfo.cs主要用來設定生成的有關程式集的常規信息dll文件的一些參數
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
5.在Global.asax設置log4net
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("/Log4net.config")));
6.log4netHelper的幫助類
public class Log4netHelper { #region /// <summary> /// /// </summary> /// <param name="msg"></param> public static void ErrorLog(object msg) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); Task.Run(() => log.Error(msg)); //非同步 // Task.Factory.StartNew(() =>log.Error(msg));// 這種非同步也可以 //log.Error(msg); //這種也行跟你需要,性能越好,越強大,我還是使用非同步方式 } /// <summary> /// /// </summary> /// <param name="ex"></param> public static void ErrorLog(Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); Task.Run(() => log.Error(ex.Message.ToString() + "/r/n" + ex.Source.ToString() + "/r/n" + ex.TargetSite.ToString() + "/r/n" + ex.StackTrace.ToString())); } /// <summary> /// /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void ErrorLog(object msg, Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); if (ex != null) { Task.Run(() => log.Error(msg, ex)); //非同步 } else { Task.Run(() => log.Error(msg)); //非同步 } } #endregion }
7.直接是調用幫助類,裡面一個有三個方法,ErrorLog重載,根據自己的需要來調用