ASP.NET Core 3 NLog配置
使用NLog记录日志
手动或使用NuGet在csproj中添加依赖项
- 安装最新版本:
- NLog.Web.AspNetCore 4.9+
- 如有可能,更新NLog软件包
创建nlog.config文件。
在项目的根目录中创建nlog.config(全部小写)文件。
我们使用以下示例:
<?xml version="1.0" encoding="utf-8" ?>
注意:日志生成的文件在bin目录下
配置文件的更多详细信息在这里
请注意,如果删除所有其他LoggingProviders(如控制台)并且仅使用NLog,则可能必须特别注意Hosting Lifetime Startup Messages。因为这可能导致托管环境(Visual Studio / Docker / Azure容器)看不到启动的应用程序。
启用复制到bin文件夹
- .csproj手动编辑文件并添加:
修改 program.cs
using System;
using NLog.Web;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
public static void Main(string[] args)
{
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
logger.Debug("init main");
CreateHostBuilder(args).Build().Run();
}
catch (Exception exception)
{
//NLog: catch setup errors
logger.Error(exception, "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 IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog(); // NLog: Setup NLog for Dependency injection
配置 appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
切记还要更新任何特定于环境的配置,以免引起任何意外。
写日志
using Microsoft.Extensions.Logging;
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILogger logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("这是Info等级的信息");
return View();
}
}
输出
日志时间:2020-08-20 16:56:24.3082
日志来源:QS.Core.Web.Areas.Admin.Controllers.HomeController.Index
日志级别:INFO
消息内容:这是Info等级的信息
----------------------------------------------------------------
如果无法输出日志文件请检查appsettings.json文件或在bin目录下查看
使用nlog.config配置NLog
官方文档