上一篇, 都是從別人那里拷過來的, 主要是介紹規則和說明的. 這一篇, 才是重點, 講實際使用.
首先介紹項目中最常用的配置文件方式.
一、log4net.config 文件方式
我習慣, 把log4net的配置, 放在一個單獨的配置文件中, 而不是放在 app.config或者web.config文件中, 這樣做, 雖然麻煩了一點, 但是好處就是涇渭分明, 清晰明了.
1. 首先要做的, 就是在 AssemblyInfo.cs 文件中, 加一句話
[assembly:log4net.Config.DOMConfigurator(Watch=true, ConfigFile="Log4net.config")]
2. 接下來, 有兩種方法, 一種是在app.config/web.config文件中加兩句話, 另一種是在程序中加一句話. 那么先看第一種吧.
2.1 web.config
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net configSource="log4net.config" />
與這無關的配置, 我都干掉了. 接下來, 可以看看我的 Log4net.config文件
<?xml version="1.0" encoding="utf-8" ?> <log4net> <root> <level value="ALL" /> <appender-ref ref="ErrorLogFileAppender" /> <appender-ref ref="TraceLogFileAppender" /> </root> <!--跟蹤日志輸出--> <appender name="TraceLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\Trace\" /> <appendToFile value="true" /> <MaxSizeRollBackups value="20" /> <RollingStyle value="Date" /> <DatePattern value="yyyy-MM-dd'.txt'" /> <StaticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <header value="[BEGIN LOGGING AT %date]%newline" type="log4net.Util.PatternString" /> <footer value="[END LOGGING AT %date]%newline%newline" type="log4net.Util.PatternString" /> <ConversionPattern value="%d [%t] %-5p %c - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter,log4net"> <levelMin value="DEBUG" /> <levelMax value="INFO" /> </filter> </appender> <!--錯誤日志輸出--> <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\Error\" /> <MaxSizeRollBackups value="20" /> <StaticLogFileName value="false" /> <DatePattern value="yyyy-MM-dd'.txt'" /> <RollingStyle value="Date" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout,log4net"> <header value="[BEGIN LOGGING AT %date]%newline" type="log4net.Util.PatternString" /> <footer value="[END LOGGING AT %date]%newline%newline" type="log4net.Util.PatternString" /> <ConversionPattern value="%d [%t] %-5p %c - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter,log4net"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> </appender> </log4net>
我在controller中, 弄了一個錯誤點, 還是把代碼貼出來吧. 清晰點
public ActionResult Index() { LogHelper.Log("trace").WriteInfo("進入HomeController/Index方法");try { int a = 0; int b = 1; var s = b / a; } catch (Exception ex) { string errorMsg = string.Format(@"后臺異常信息:【{0}】, 引發異常的方法:【{1}】, 引發異常的對象:【{2}】", ex.Message, //異常信息 ex.TargetSite.ToString(), //異常方法名 ex.Source //引發異常的對象 ); LogHelper.Log("logsys").WriteError(errorMsg); } LogHelper.Log("trace").WriteInfo("離開HomeController/Index方法"); return View(list); }
接下來看一下結果:
1). 看一下生成的目錄
這里使用的是日期命名的方式, 每天一個文件, 還有一種, 是使用大小限制的方式, 一個文件限制比如10M, 過了10M, 會自動重新生成一個文件.
2). 看一下日志里面記錄的內容
這里的例子, 用的都是最簡單的方式, 主要是介紹一下使用方法.
2.2 程序中配置的方式
public class LogHelper { static LogHelper() { XmlConfigurator.Configure(new FileInfo("Log4net.config")); } private static LogHelper _instance = null; private static ILog ILog; public static LogHelper Log(Type t) { if (_instance == null) _instance = new LogHelper(); ILog = LogManager.GetLogger(t); return _instance; } public static LogHelper Log(string sType) { if (_instance == null) _instance = new LogHelper(); ILog = LogManager.GetLogger(sType); return _instance; } /// <summary> /// 寫調試信息 /// </summary> /// <param name="msg">消息</param> public void WriteDebug(string msg) { ILog.Debug(msg); } /// <summary> /// 寫普通信息 /// </summary> /// <param name="msg">消息</param> public void WriteInfo(string msg) { ILog.Info(msg); } /// <summary> /// 寫警告信息 /// </summary> /// <param name="msg">消息</param> public void WriteWarn(string msg) { ILog.Warn(msg); } /// <summary> /// 寫錯誤信息 /// </summary> /// <param name="msg">消息</param> public void WriteError(string msg) { ILog.Error(msg); } /// <summary> /// 寫錯誤信息 /// </summary> /// <param name="msg">消息</param> /// <param name="ex">錯誤信息</param> public void WriteError(string msg, Exception ex) { ILog.Error(msg, ex); } /// <summary> /// 寫重大錯誤信息 /// </summary> /// <param name="msg">消息</param> public void WriteFatal(string msg) { ILog.Fatal(msg); } }
主要是 XmlConfigurator.Configure() 方法. config里面app.config/web.config文件中不加配置, 加這一句話也是可以的.
看一下結果:
這里只有Begin logging , 為啥沒有 End logging呢, 這個是logger自動加的, 會在結束的時候加上去的.
文章列表