.NET Core Mvc和MySql初接觸(三)log4Net全域性異常日誌
阿新 • • 發佈:2018-12-12
首先到NuGet上安裝log4net 安裝完成後增加一個log4net配置檔案,命名隨意,需要到startup.cs初始化
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- This section contains the log4net configuration settings --> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" /> </appender> <!--<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log-file.log" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender>--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile/" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <staticLogFileName value="false" /> <datePattern value="yyyyMMdd'.log'" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!-- Setup the root category, add the appenders and set the default level --> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="FileAppender" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> </configuration>
將上面的程式碼複製到配置檔案中,然後到startup.cs中初始化:
public Startup(IConfiguration configuration) { Configuration = configuration; repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); } public static ILoggerRepository repository { get; set; } services.AddMvc(options => { options.Filters.Add<Models.HttpGlobalExceptionFilter>(); });//加入全域性異常類,日誌,放置在ConfigureServices方法內
配置完之後異常,自動寫日誌就已經實現,接下來寫一個靜態方法,實現手動寫日誌
public class Logger
{
public static ILog Write = LogManager.GetLogger(Startup.repository.Name, typeof(HttpGlobalExceptionFilter));//日誌記錄
}
在需要寫日誌的地方就可以這個類的靜態方法,例如:Logger.Write.Info(“登入出錯:” + e);