繁体   English   中英

如何使用 asp.net core 和 Serilog 格式化文件日志输出

[英]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 方法添加文件日志记录。

https://github.com/serilog/serilog-extensions-logging-file

像这样

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM