程式碼:
using log4net; using System; using System.Reflection; using System.Windows.Forms; namespace Test { public partial class Form1 : Form { /// <summary> /// Logger /// </summary> private ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.Name); /// <summary> /// Logger Error /// </summary> private ILog LogError = LogManager.GetLogger("ErrorsAppender"); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); try { var str = "Hi"; Log.Info(str); Convert.ToDouble(str); } catch (FormatException ex) { LogError.Error(ex.StackTrace); } } } }
App.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--引入Log4Net--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <log4net> <!--Output File--> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <!--檔案名稱--> <file value="Log/Log.txt"/> <!--Unicode--> <encoding value="utf-8" /> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="1"/> <!--檔案最大容量--> <maximumFileSize value="100MB"/> <!--非固定的檔案名稱--> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <!--日期 Thread 層級 Logger名稱 訊息 換行--> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> </layout> <!--Filter info--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="INFO" /> </filter> </appender> <!--錯誤訊息--> <appender name="ErrorsAppender" type="log4net.Appender.RollingFileAppender"> <!--檔案名稱--> <file value="Log/Error.txt"/> <encoding value="utf-8" /> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="1"/> <maximumFileSize value="100MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <!--日期 Thread 層級 Logger名稱 訊息 換行--> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> </layout> <!--Filter level--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> </appender> <!--除錯訊息--> <appender name="DebugAppender" type="log4net.Appender.DebugAppender"> <immediateFlush value="true"/> <layout type="log4net.Layout.PatternLayout"> <!--日期 Thread 層級 Logger名稱 訊息 換行--> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> </layout> </appender> <!--載入設定--> <root> <level value="ALL"/> <appender-ref ref="DebugAppender"/> <appender-ref ref="RollingFileAppender"/> <appender-ref ref="ErrorsAppender"/> </root> </log4net> </configuration>
執行結果: