標籤:
接上篇:
Exceptionless 本地部署
在部署完成後可以使用log4net搭配Exceptionless來記錄日誌。
過程很簡單,使用Nuget安裝Exceptionless.Log4net,安裝完成後會自動開啟一個readme.txt,裡面有介紹使用,其實就是把下面這段配置放到log4net的配置中:
<appender name="exceptionless" type="Exceptionless.Log4net.ExceptionlessAppender,Exceptionless.Log4net" />
在項目中添加設定檔log4net.config並設定始終複製到輸出目錄:
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!--定義輸出到檔案中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定義檔案存放位置--> <file value="log\\"/> <!--是否追加到檔案,預設為true,通常無需設定--> <appendToFile value="true"/> <!--多線程時採用最小鎖定--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--變換的形式為日誌大小--> <!--這種情況下MaxSizeRollBackups和maximumFileSize的節點設定才有意義--> <!--<rollingStyle value="Size"/>--> <!--每天記錄的記錄檔個數,與maximumFileSize配合使用--> <!--<MaxSizeRollBackups value="10"/>--> <!--每個記錄檔的最大大小--> <!--可用的單位:KB|MB|GB--> <!--不要使用小數,否則會一直寫入當前日誌--> <!--<maximumFileSize value="2MB"/>--> <!--變換的形式為日期,這種情況下每天只有一個日誌--> <!--此時MaxSizeRollBackups和maximumFileSize的節點設定沒有意義--> <rollingStyle value="Date"/> <!--每分鐘寫一個檔案--> <!--<datePattern value="yyyyMMdd-HHmm" />--> <!--日期的格式,每天換一個檔案記錄,如不設定則永遠只記錄一天的日誌,需設定--> <datePattern value="yyyyMMdd\\HH‘.txt‘"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%newline %n記錄時間:%date %n描述:%message"/> <!--<conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n記錄層級: %-5level %n出錯類:%logger property: [%property{NDC}] - %n錯誤描述:%message%newline %n"/>--> </layout> </appender> <appender name="exceptionless" type="Exceptionless.Log4net.ExceptionlessAppender,Exceptionless.Log4net" /> <root> <!--控制層級,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定義層級為INFO,則INFO層級向下的層級,比如DEBUG日誌將不會被記錄--> <!--如果沒有定義LEVEL的值,則預設為DEBUG--> <level value="ALL"/> <!--檔案形式記錄日誌--> <appender-ref ref="RollingLogFileAppender"/> <appender-ref ref="exceptionless"/> </root> </log4net></configuration>
View Code
修改程式碼如下:
static void Main(string[] args) { FileInfo fi = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config")); XmlConfigurator.ConfigureAndWatch(fi); ILog logger= LogManager.GetLogger(typeof(Program)); ExceptionlessClient.Default.Startup("oXX5BJqhS30ni045BqthqJtiSnpB0naMactfmYmI"); //var client = new ExceptionlessClient(c => { // c.ApiKey = "oXX5BJqhS30ni045BqthqJtiSnpB0naMactfmYmI"; // c.ServerUrl = "http://localhost:8004"; //}); try { throw new Exception("test exception "+DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss")); } catch (Exception ex) { //client.SubmitException(ex); //ex.ToExceptionless().Submit(); logger.Error(ex); Console.WriteLine("error send"); } Console.ReadKey(); }
在http://localhost:8004/#/type/log/dashboard中就能看到日誌內容了:
Exceptionless搭配log4net記錄日誌