如何在serilog中使用基于代码的配置来输出紧凑的日志级别。

问题描述 投票:0回答:1

当使用serilog时,基于代码的配置和基于文件的配置似乎会产生不同的日志级别的紧凑性。

当使用代码配置时我得到[2020-05-15T13:09:36 Information],而使用配置文件配置时我得到[2020-05-15T13:09:37 INF]。

如果有人能告诉我如何用基于代码的配置得到 "INF "而不是 "INFORM",我会非常感激。

代码配置。


   return new LoggerConfiguration()
                .Enrich.FromLogContext()
                .WriteTo.Console(LogEventLevel.Verbose,
                    outputTemplate:
                    "[{Timestamp:s} {Level:Level:w3}] {Component} {PollCount} {RequestId} {Message:lj}{NewLine}")
                .WriteTo.File(
                    $"{Path.GetTempPath()}\\Logs\\agent.log",
                    rollingInterval: RollingInterval.Day,
                    restrictedToMinimumLevel: LogEventLevel.Verbose, 
                    outputTemplate: "[{Timestamp:s} {Level:Level:w3}] {Component} {PollCount} {RequestId} {Message:lj}{NewLine}"
                    )

                .CreateLogger()
                .ForContext<T>();

appsettings.json配置。


  "WriteTo": [
      {
        "Name": "Async",
        "Args": {
          "configure": [
            {
              "Name": "Console",
              "Args": {
                "outputTemplate": "[{Timestamp:s} {Level:Level:u3}] {Component} {PollCount} {RequestId} {Message:lj}{NewLine}"
              }
            },
c# serilog
1个回答
0
投票

默认情况下,日志事件使用全名。要覆盖使用输出Template.Level的有效值为 u(大写)或w(小写)和若干个字符. 关卡名称是缩写,信息简称为 "INF"。我想是由于无效值的原因,它显示的是默认文本

所以Level:u3将输出INF

级别:w3将输出信息

Serilog的官方链接,包含等级信息。此处

© www.soinside.com 2019 - 2024. All rights reserved.