Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging appsettings.json中Filters.Expressions的Serilog和Filters_Logging_.net Core_Console Application_Serilog - Fatal编程技术网

Logging appsettings.json中Filters.Expressions的Serilog和Filters

Logging appsettings.json中Filters.Expressions的Serilog和Filters,logging,.net-core,console-application,serilog,Logging,.net Core,Console Application,Serilog,我们希望获得以下方面的日志: 控制台(所有日志) 文件(所有日志) 文件(仅过滤日志) 所有这些都在appsettings.json中配置 这是应用程序的appsettings.json文件: { "Serilog": { "Using": [ "Serilog.Sinks.Literate", "Serilog.Sinks.File", "Serilog.Filters.Expressions" ], "MinimumLevel": "Verbose", "Writ

我们希望获得以下方面的日志:

  • 控制台(所有日志)
  • 文件(所有日志)
  • 文件(仅过滤日志)
  • 所有这些都在appsettings.json中配置

    这是应用程序的appsettings.json文件:

    {
      "Serilog": {
        "Using": [ "Serilog.Sinks.Literate", "Serilog.Sinks.File", "Serilog.Filters.Expressions" ],
        "MinimumLevel": "Verbose",
        "WriteTo": [
          {
            "Name": "LiterateConsole"
          },
          {
            "Name": "File",
            "Args": {
              "path": "%TEMP%\\Logs\\FileWithoutFilter-.log",
              "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
              "rollingInterval": "Day"
            }
          },
          {
            "Name": "File",
            "Args": {
              "path": "%TEMP%\\Logs\\UPLOADERROR-.log",
              "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
            },
            "Filter": [
              {
                "Name": "ByIncludingOnly",
                "Args": {
                  "expression": "@Level = 'Error' and UploadError is not null"
                }
              }
            ]
          }
        ]
      }
    }
    
    但是,尽管控制台和文件(无过滤)运行良好,但有过滤的文件会记录所有行,就像文件(无过滤)一样

    我们正在以C#代码发送此log.error行:

    但是,我说过,所有的行都记录到UPLOADERROR文件中

    知道appsettings.file中的错误吗


    关于。

    解决方案是将子日志与serilog一起使用。然后必须使用筛选和接收器配置子日志记录器

    仔细阅读与常规、配置和过滤器相关的serilog文档是诀窍

    {
      "Serilog": {
        "Using": [ "Serilog.Sinks.Literate", "Serilog.Sinks.File", "Serilog.Filters.Expressions" ],
        "MinimumLevel": "Verbose",
        "WriteTo": [
          {
            "Name": "LiterateConsole"
          },
          {
            "Name": "File",
            "Args": {
              "path": "%TEMP%\\Logs\\FileWithoutFilter-.log",
              "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
              "rollingInterval": "Day"
            }
          },
          {
            "Name": "Logger",
            "Args": {
              "configureLogger": {
                "Filter": [
                  {
                    "Name": "ByIncludingOnly",
                    "Args": {
                      "expression": "@Level = 'Error' and UploadError is not null"
                    }
                  }
                ],
                "WriteTo": [
                  {
                    "Name": "File",
                    "Args": {
                      "path": "%TEMP%\\Logs\\UPLOADERROR-.log",
                      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }
    
    使用以前的配置,现在一切正常

    {
      "Serilog": {
        "Using": [ "Serilog.Sinks.Literate", "Serilog.Sinks.File", "Serilog.Filters.Expressions" ],
        "MinimumLevel": "Verbose",
        "WriteTo": [
          {
            "Name": "LiterateConsole"
          },
          {
            "Name": "File",
            "Args": {
              "path": "%TEMP%\\Logs\\FileWithoutFilter-.log",
              "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
              "rollingInterval": "Day"
            }
          },
          {
            "Name": "Logger",
            "Args": {
              "configureLogger": {
                "Filter": [
                  {
                    "Name": "ByIncludingOnly",
                    "Args": {
                      "expression": "@Level = 'Error' and UploadError is not null"
                    }
                  }
                ],
                "WriteTo": [
                  {
                    "Name": "File",
                    "Args": {
                      "path": "%TEMP%\\Logs\\UPLOADERROR-.log",
                      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }