【问题标题】:Using the console as readkey input AND as sink for serilog logging使用控制台作为 readkey 输入和作为 serilog 日志记录的接收器
【发布时间】:2020-08-13 12:19:54
【问题描述】:

我希望能够将控制台用于用户命令输入(例如:console.Readkey())。问题是一位同事将 serilog 作为我们的日志记录方法并将控制台用作接收器,这似乎忽略了我的 C# 代码中的每个 Console.Write() 或 Console.ReadLine() 指令。

有没有办法解决这个问题而无需创建第二个控制台实例?

编辑:这是我的 json 配置文件中 serilog 配置的摘录

"Logging": {
"Using": [
  "Serilog.Sinks.Console",
  "Serilog.Sinks.File",
  "Serilog.Sinks.Debug"
],
"MinimumLevel": "Debug",
"WriteTo": [
  {
    "Name": "Console",
    "Args": {
      "restrictedToMinimumLevel": "Debug",
      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    }
  },
  {
    "Name": "File",
    "Args": {
      "path": "xxxxxxxx.log",
      "rollingInterval": "Day",
      "rollOnFileSizeLimit": true,
      "retainedFileCountLimit": 10,
      "fileSizeLimitBytes": 10240000,
      "restrictedToMinimumLevel": "Debug",
      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    }
  },
  {
    "Name": "Debug",
    "Args": {
      "restrictedToMinimumLevel": "Debug",
      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    }
  }

【问题讨论】:

  • 可以分享serilog的配置吗?
  • @FelipeOriani 感谢您的评论,我添加了配置。我对 serilog 不熟悉,其他人做了这部分,我猜这就是我挣扎的原因

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


【解决方案1】:

您可以删除控制台的配置日志,只保留FileDebug。从UsingWriteTo 数组中删除它:

"Logging": {
    "Using": [
        "Serilog.Sinks.File",
        "Serilog.Sinks.Debug"
    ],
    "MinimumLevel": "Debug",
    "WriteTo": [
        {
            "Name": "File",
            "Args": {
                "path": "xxxxxxxx.log",
                "rollingInterval": "Day",
                "rollOnFileSizeLimit": true,
                "retainedFileCountLimit": 10,
                "fileSizeLimitBytes": 10240000,
                "restrictedToMinimumLevel": "Debug",
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
            }
        },
        {
            "Name": "Debug",
            "Args": {
                "restrictedToMinimumLevel": "Debug",
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
            }
        }
    ]
}

我不确定,但也许Debug 也可以登录控制台(或 Visual Studio 的输出窗口)。如果它在控制台上令人不安,请按照控制台上的建议将其移除。

【讨论】:

  • 我希望我可以登录控制台并同时读取它,但如果那不可能,我会按照你的建议做,谢谢
  • 您可以保留 Debug 以查看 Visual Studio 的 Output Windows 上的日志并保持控制台干净,因为它是一个控制台应用程序,而控制台是您的 UI。我认为您不能同时保留(日志和输入)。
猜你喜欢
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多