【问题标题】:Problems configuring Serilog from appSettings.json从 appSettings.json 配置 Serilog 的问题
【发布时间】:2019-12-06 13:31:15
【问题描述】:

我有一个关于通过 appSettings.json 配置 Serilog 的问题。 我的项目是一个控制台应用程序,基于 .Net Core 3.0。 我尝试设置 Serilog 以便将日志信息写入控制台和日志文件。

当我在自己的代码中配置所有内容时 - 一切都按预期工作。

但是当我尝试从 appsettings.json 文件导入 Serilog 配置设置时,我遇到了问题,我的 ConsoleSink 工作正常,但我的 FileSink 却不行。

这是我在 appsettings.json 中写入的内容:

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "File",
        "Args": { "pathFormat": "Xlog.txt" }
      },
      { "Name": "Console" }
    ]
  }
}

这是相关的代码:

  IConfiguration configSerilog = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json", true, true)
                .Build();


            log = new LoggerConfiguration()
                 .ReadFrom.Configuration(configSerilog)
                 .CreateLogger();


            log.Information("Initializing Serilog....");

我的“测试日志消息”显示在我的控制台窗口中,但我没有得到日志文件。

正如我所提到的,当我在自己的代码中配置 Serilog 时,它可以工作,而不是通过 appsettings。 所以,我确实拥有创建文件的适当访问权限。

有什么想法或提示吗?

【问题讨论】:

  • 搜索 Serilog SelfLog 和/或使用 Sysinternals Filemon

标签: c# .net-core console-application serilog


【解决方案1】:

确保appsettings.json 的文件属性,属性“复制到输出目录”是“始终复制”或“如果更新则复制 >”。

并更新你的配置如下(Args 中的pathFormat 应该是path

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "File",
        "Args": { "path": "Xlog.txt" }
      },
      { "Name": "Console" }
    ]
  }
}

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多