[英]How to format file log output with asp.net core and Serilog
我正在使用Asp.Net Core测试一些基本的文件日志记录,我使用 Serilog,因为它可以快速设置。
我遇到的问题是,当我使用内置的 ILogger 记录来自HomeController
的消息时,文件输出中没有提到控制器。 例如..记录器在控制器中是这样的,并在构造函数中以通常的方式注入..
private readonly ILogger<HomeController> _logger;
我正在记录一些东西作为这样的测试
_logger.LogError("Test error log");
这出现在这样的文件中.. 没有提到 HomeController。
2019-11-28T11:36:52.7735997+00:00 8000000c-0003-fe00-b63f-84710c7967bb [INF] 测试信息日志 (72772865)
另外我在哪里/如何格式化这个日期所以它不是那么长? 如果它在 json 或 startup.cs 中完成,则文档中不清楚。 而且我不需要8000000a-0003-fe00-b63f-84710c7967bb
请求 ID。
在startup.cs
中设置如下
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddFile("Logs/HPPartnerPortal-{Date}.txt");
我的config.json
指定了默认值
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning"
}
我注意到您可以像上面一样在 startup.cs 中使用 configure 方法添加文件日志记录。
像这样
Host.CreateDefaultBuilder(args)
//we are setting up logging in Startup.cs so this is not needed ? !
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
logging.AddDebug();
//logging.AddFile("Logs/myapp-{Date}.txt"); -- AddFile not recognised?!
})
这里的问题是它无法识别 AddFile,即使我添加了 Serilog.Extensions.Logging.File 这是 1.1.0,它是 nuget 中的最新版本。
根据文档,这应该在您的 appsettings.json 中设置模板
{
"Logging": {
...
"OutputTemplate" : "{Timestamp:HH:mm:ss} {RequestId,13} -[{Level:u3}] {Message} ({EventId:x8}){NewLine}{Exception}",
...
}
}
我试过了,但对我不起作用。 如果有人发现它有效,请发表评论。
编辑。 找到解决方案,必须安装2.0.0版本的扩展。
您可以安装 nuget 包Serilog.Extensions.Logging
或者您可以修改 Project.json 并添加以下行:
"Serilog.Extensions.Logging": "1.0.0"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.