我正在使用 NLog 来记录我的应用程序,我只遵循文档中的示例,但我无法理解一些事情,例如规则部分中的“logger”属性是什么?目前的值是“控制器和存储库”
我遇到的另一个问题是,当我执行指令 _logger.LogInfo("any log") 或 _logger.LogInformation("any log") 时,这些指令都没有记录在我的日志文件中,我做错了什么?我给你举个例子
Program.cs(加载nlog)
LogManager.Configuration = new NLogLoggingConfiguration(configuration.GetSection("NLog"));
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Logging.AddNLog();
然后当我想在不同层使用日志时:
控制器:
[HttpPost]
[Route("register")]
public async Task<IActionResult> Register(RequestFilter filter)
{
_logger.LogInformation("log test......."); //not work
_logger.LogDebug("log debug test......."); //not work
_logger.LogError("log error test......."); //not work
//code.....
return Ok("success");
}
日志文件已生成,但它不记录我在整个应用程序中保存的任何日志
将结果记录在文本文件中:
2023-11-21 12:11:43.2474 信息消息模板自动格式化已启用 2023-11-21 12:11:43.3100 信息 注册目标 NLog.Targets.FileTarget(名称=文件) 2023-11-21 12:11:43.3286 信息 验证配置:TargetNames=文件,ConfigItems=19 ConfigSection=NLog 2023-11-21 12:12:35.7331 信息消息模板自动格式化已启用 2023-11-21 12:12:35.8335 信息 注册目标 NLog.Targets.FileTarget(Name=file) 2023-11-21 12:12:35.8638 信息 验证配置:TargetNames=文件,ConfigItems=19 ConfigSection=NLog 2023-11-21 12:13:40.4712 信息消息模板自动格式化已启用 2023-11-21 12:13:40.5965 信息 注册目标 NLog.Targets.FileTarget(名称=文件) 2023-11-21 12:13:40.6250 信息 验证配置:TargetNames=文件,ConfigItems=19 ConfigSection=NLog 2023-11-21 17:14:56.1217 信息消息模板自动格式化已启用 2023-11-21 17:14:56.4649 信息 注册目标 NLog.Targets.FileTarget(名称=文件) 2023-11-21 17:14:56.4834 信息 验证配置:TargetNames=文件,ConfigItems=19 ConfigSection=NLog 2023-11-21 17:14:56.8172 信息验证配置:TargetNames=file, ConfigItems=19 ConfigSection=NLog
我做错了什么?
如果您不理解现有的logging-rules,那么只需将其替换为:
{
"NLog": {
"throwConfigExceptions": true,
"internalLogLevel": "Info",
"internalLogFile": "${basedir}/logs/logs-nlog.txt",
"targets": {
"file": {
"type": "File",
"fileName": "${basedir}/logs/my_api-log-${shortdate}.log",
"maxArchiveFiles": 7
}
},
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "file"
}
]
}
}
另请参阅:https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-configuration-with-appsettings.json
注意
log result in text file:
是从 NLog InternalLogger 到 logs/logs-nlog.txt
的输出,而不是应用程序日志文件 logs/my_api-log
的输出。