Thiết lập dự án ASP.NET Core API
Tạo ứng dụng web ASP.NET Core chọn template API
Cài đặt gói NuGet
dotnet add package NLog
dotnet add package NLog.Web.AspNetCore
Cấu hình tập tin nlog.config
Thêm tệp cấu hình với thuộc tính "Copy to Output Directory: Always"
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
autoReload="true"
internalLogLevel="Info">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<target name="allLogs" type="File"
fileName="logs/all-${shortdate}.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
<target name="appLogs" type="File"
fileName="logs/app-${shortdate}.log"
layout="${longdate}|${level}|${logger}|${message}|${aspnet-request-url}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="allLogs" />
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<logger name="*" minlevel="Debug" writeTo="appLogs" />
</rules>
</nlog>
Cấu hình appsettings.json
"Logging": {
"LogLevel": {
"Default": "Information",
"System": "Warning"
}
}
Đăng ký dịch vụ logging
Phương pháp 1: Cấu hình Program.cs
public static void Main(string[] args) {
NLogBuilder.ConfigureNLog("nlog.config");
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging(logging => {
logging.ClearProviders();
})
.UseNLog();
Phương pháp 2: Cấu hình Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
env.ConfigureNLog("nlog.config");
app.UseRouting();
// Các cấu hình middleware khác
}
Ghi nhật ký trong Controller
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase {
private readonly ILogger<AuthController> _logger;
public AuthController(ILogger<AuthController> logger) {
_logger = logger;
}
[HttpGet("authenticate")]
public IActionResult Authenticate() {
_logger.LogInformation("Yêu cầu xác thực");
_logger.LogWarning("Cảnh báo xác thực");
_logger.LogError("Lỗi xác thực");
return Ok();
}
}
Mức độ nhật ký
Các mức độ theo thứ tự quan trọng:
- Trace (Chi tiết nhất)
- Debug
- Information
- Warning
- Error
- Critical (Nghiêm trọng nhất)
Tùy chỉnh cấu hình
Tham khảo tài liệu chính thức:
- Mẫu cấu hình: https://github.com/NLog/NLog/wiki
- Thẻ target: https://nlog-project.org/config/?tab=targets
- Bố cục log: https://nlog-project.org/config/?tab=layouts