Ana*_*yuk 5 c# console logging
我使日志输出如下:
static void Main(string[] args)
{
ILoggerFactory loggerFactory = new LoggerFactory()
.AddConsole();
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation(
"This is a test of the emergency broadcast system.");
Console.WriteLine("Press any key...");
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
我收到消息:
信息:ConsoleLogging.Program[0]
这是对紧急广播系统的一次测试。
但我想这样:
信息:这是对紧急广播系统的测试。
如何格式化控制台中日志的输出?我使用 Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console 库。
我正在尝试做同样的事情。
我首先创建一个名为SimpleConsoleLogger
继承自 的类,ConsoleLogger
以便我可以重写该WriteMessage()
方法,但原始方法中的代码依赖于一些私有内部结构和字段,并且我不想从头开始编写整个方法。
我最终根据 ConsoleLogger.cs 的源代码SimpleConsoleLogger
创建了自己的类,我可以在其中删除类别和事件 id 部分中的以下行:WriteMessage()
logBuilder.Append(logName);
logBuilder.Append("[");
logBuilder.Append(eventId);
logBuilder.AppendLine("]");
Run Code Online (Sandbox Code Playgroud)
...以及消息部分中的以下行:
logBuilder.Append(_messagePadding);
Run Code Online (Sandbox Code Playgroud)
然后,我必须创建一个SimpleConsoleLoggerProvider
基于 的类,在代码中ConsoleLoggerProvider
替换我的类,并执行相同的操作以创建,以便我可以将记录器连接到工厂,如下所示:SimpleConsoleLogger
ConsoleLoggerExtensions
SimpleConsoleLoggerExtensions
_loggerFactory = new LoggerFactory().AddSimpleConsole();
Run Code Online (Sandbox Code Playgroud)
这不是最简单的解决方案,因此类名有点用词不当,但它确实有效。