.NET Core use NLog
阿新 • • 發佈:2020-07-15
Nlog 實現了Microsoft.Extensions.Logging.ILogger。
首先Nuget下載新增引用:NLog.Extensions.Logging
在新增NLog的配置檔案“NLog.Config” 到專案,內容如下:
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="File" fileName="Log/log.txt" /> <target name="console" xsi:type="Console" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> <logger name="*" minlevel="Info" writeTo="console" /> </rules> </nlog>
在:Program 類(我這個是Console程式)修改:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureLogging(logging => { logging.ClearProviders(); logging.AddNLog(); logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);}) .ConfigureServices((hostContext, services) => { services.AddHostedService<DataService>(); });
在用的地方注入Microsoft.Extensions.Logging.ILogger:
private Microsoft.Extensions.Logging.ILogger<DataService> _logger; public DataService(ILogger<DataService> logger) { _logger = logger; } protected void Test() { _logger.LogError("test.........");
最後會在Log/log.txt 記錄日誌輸出資訊。
另外可以定義為NLog.ILogger _logger;
可惜的是NLog沒有NLog.ILogger<T>這種形式!!!!
也不能直接注入NLog.ILogger,會報 'Unable to resolve service for type 'NLog.ILogger' while attempting to activate 。
可以這樣:
private readonly Logger _logger; public DataService() { _logger = LogManager.GetCurrentClassLogger(); }