【问题标题】:How to format file log output with asp.net core and Serilog如何使用 asp.net core 和 Serilog 格式化文件日志输出
【发布时间】:2020-03-24 02:41:00
【问题描述】:

我正在使用 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 方法添加文件日志记录。或者您可以按照

中的指定将其添加到 program.cs

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 中的最新版本。

【问题讨论】:

  • 最好的地方是查看 Serilog 文档。请查看here
  • 当然,但这假设您想使用自己的静态日志而不是 ILogger。我认为如果它的 ILogger 必须在日志记录下的配置 json 中指定..
  • Serilog 是另一个默认的日志框架,由 ASP.NET Core 开箱即用。当您想使用 Serilog 时,您必须按照文档中的说明对其进行初始化和配置。
  • 我要更新这个问题。

标签: c# asp.net-core serilog


【解决方案1】:

你可以安装nuget包Serilog.Extensions.Logging 或者您可以修改 Project.json 并添加以下行:

"Serilog.Extensions.Logging": "1.0.0"

【讨论】:

    【解决方案2】:

    根据documentation,这应该在你的appsettings.json中设置模板

    {
      "Logging": {
        ...
        "OutputTemplate" : "{Timestamp:HH:mm:ss} {RequestId,13} -[{Level:u3}] {Message} ({EventId:x8}){NewLine}{Exception}",
        ...
      }
    }
    

    我试过了,但它对我不起作用。如果有人发现它有效,请发表评论。

    编辑。 找到了解决办法,必须安装2.0.0版本的扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2017-02-15
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多