.net core 整合日誌log4net
阿新 • • 發佈:2019-02-19
.net core 框架裡本身嵌入了日誌系統。例項化 Microsoft.Extensions.Logging.LoggerFactory 開始
利用 ILoggerFactory 的擴充套件方法指定您想使用的提供程式。程式碼如下:
public static void Main(string[] args = null) { ILoggerFactory loggerFactory = new LoggerFactory() .AddConsole() .AddDebug(); ILogger logger = loggerFactory.CreateLogger<Program>(); logger.LogInformation( "This is a test of the emergency broadcast system."但是現成的 ILogger 實現 (Microsoft.Extensions.Logging.Logger) 沒有此類異常處理,因此,如果發生異常,將需要呼叫程式碼來處理,而且想要這樣做的話,每次都得呼叫 Logger.LogX。解決此問題的常規方法可能是包裝記錄器以捕獲異常。基本上輸出在console上。而且沒有找到輸出txt檔案。當釋出在iis上啥都看不到。); }
所以決定還是整合log4net。首先nuget里加入log4net的包,增加配置檔案。然後在 startup檔案中加入下面程式碼:
public static ILoggerRepository repository { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); //(Jacky 2017-06-27) repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); }
呼叫日誌
var log = LogManager.GetLogger(repository.Name, typeof(Startup));
log.Info("test");