如何解决使用控制台作为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}"
}
}
解决方法
您可以删除控制台的配置日志,并仅保留File
和Debug
。从Using
和WriteTo
数组中删除它:
"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的输出窗口上登录)。如果它在控制台上令人不安,请按照控制台上的建议将其删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。