You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# ASP.NET Core 2.x 使用Nlog
## 第一步
> 创建一个 ASP.NET Core 2. 项目
## 第二步
> 添加nuget包
> + NLog
> + NLog.Web.AspNetCore
> + NLog.Extensions.Logging
## 第三步
> 根目录创建配置文件 nlog.config, 至少配置一项Target和一项Rules
## 第四步
> 配置文件属性配置为"复制到输出目录"
## 第五步
> 更新 program.cs
``` csharp
using NLog.Web;
using Microsoft.Extensions.Logging;
public static void Main(string[] args)
{
// NLog: setup the logger first to catch all errors
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
logger.Debug("init main");
CreateWebHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
//NLog: catch setup errors
logger.Error(ex, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
NLog.LogManager.Shutdown();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog(); // NLog: setup NLog for Dependency injection
```
## 第六步
> 配置 appsettings.json
> 在appsettings.json中指定的日志配置将覆盖对setminimumlevel的任何调用。所以要么去掉“默认”要么根据你的需要调整它。
``` json
{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Information"
}
}
}
```
> 记住还要更新任何特定于环境的配置以避免任何意外。例如appsettings.development.json
## 第七步
> 写日志在controller中注入 ILogger
```csharp
using Microsoft.Extensions.Logging;
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index page says hello");
return View();
}
}
```
## 第八步
> 查看日志