使用控制台作为readkey输入和serilog日志接收器

问题描述

我希望能够将控制台用于用户命令输入(例如: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",{
    "Name": "Debug","outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    }
  }

解决方法

您可以删除控制台的配置日志,并仅保留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的输出窗口上登录)。如果它在控制台上令人不安,请按照控制台上的建议将其删除。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...