1、在程序中引用log4net.dll
2、添加-新建配置文件Log4Net.config,並在文件屬性中“復制到輸出目錄”選中“始終復制”,文件內容如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--Log日記配置--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root></root> <!--程序中只實例化一個logger,名字為LogHelper--> <logger name ="LogHelper"> <!--輸出所有信息,這裡只使用了Info和Error--> <level value="ALL"/> <!--兩個介質名稱,對應錯誤和信息--> <appender-ref ref="ErrorRollingFileAppender" /> <appender-ref ref="InfoRollingFileAppender" /> </logger> <!--Info介質設置--> <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定義文件存放位置,Info和Error保存在不同的文件夾,方便理解--> <file value="Log\\Info\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <!--輸出格式--> <!--樣例: 記錄時間:2016-10-11 14:03:00,540 線程ID:[1] 日志級別: ERROR 錯誤內容 --> <conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n日志級別: %-5level %n%m%n"/> </layout> <!--輸出的等級 INFO--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!--Error介質設置--> <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定義文件存放位置--> <file value="Log\\Error\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <!--輸出格式--> <!--樣例: 記錄時間:2016-10-11 13:59:00,560 線程ID:[1] 日志級別: INFO 信息內容 --> <conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n日志級別: %-5level %n%m%n"/> </layout> <!--設置輸出的等級 ERROR--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net> </configuration>
3、在AssemblyInfo.cs中添加代碼,用於調用Log4Net.config:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
4、實現LogHelper,代碼如下:
public class LogHelper { private static log4net.ILog log = log4net.LogManager.GetLogger("LogHelper"); /// <summary> /// 整理異常信息 /// </summary> /// <param name="error"></param> /// <returns></returns> private static string Msg(Exception error) { string str = ""; if (error != null) { str = string.Format("異常類型:{0}\r\n異常消息:{1}\r\n異常信息:{2}\r\n", error.GetType().Name, error.Message, error.StackTrace); } return str; } /// <summary> /// 輸出異常信息 /// </summary> /// <param name="t"></param> /// <param name="ex"></param> public static void LogError(Exception ex) { log.Error(Msg(ex)); } /// <summary> /// 輸出日記信息 /// </summary> /// <param name="str"></param> public static void LogInfo(string str) { log.Info(str); } }
5、至此,可以在代碼中方便地使用Log4Net記錄信息
try { throw new Exception("這是一個新異常"); } catch(Exception ex) { LogHelper.LogError(ex); } finally { LogHelper.LogInfo("這是Info"); }