是否可以在 serilog 中更改颜色?

Is it possible to change colors in serilog?

我刚刚将 Serilog 集成到我的 dot net 核心项目中。它工作得很好,但我使用了一个黑暗的主题,一些日志真的很难阅读。例如:

这是我初始化 Serilog 的方式:

string environment =  Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        
LoggerConfiguration loggerConfig = new LoggerConfiguration();
            
if (environment == "Production")
    loggerConfig.MinimumLevel.Information();
                
loggerConfig.MinimumLevel.Override("Microsoft.AspNetCore",
    LogEventLevel.Warning) 
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .WriteTo.File("Logs/app.log");

有没有什么办法可以改变颜色,例如让黑色原木变成白色?

是的,使用控制台接收器时更改颜色的方法是通过themes。您可以尝试其中一种内置的,或创建您自己的。

默认情况下,控制台接收器会对输出进行着色:

配置接收器时可以指定主题:

    .WriteTo.Console(theme: AnsiConsoleTheme.Code)

在撰写本文时,以下内置主题可用:

  • ConsoleTheme.None - 无样式
  • SystemConsoleTheme.Literate - 样式复制 Serilog.Sinks.Literate,使用所有 Windows/.NET 支持的 System.Console 着色模式目标; 这是没有指定主题时的默认设置
  • SystemConsoleTheme.Grayscale - 仅使用灰色、白色和黑色阴影的主题
  • AnsiConsoleTheme.Literate - “识字”主题的 ANSI 16 色版本;我们希望将来更新它以使用 256 色以获得更精致的外观
  • AnsiConsoleTheme.Grayscale - “灰度”主题的 ANSI 256 色版本
  • AnsiConsoleTheme.Code - ANSI 256 色 Visual Studio 代码启发主题

添加新主题很简单;示例可以在 SystemConsoleThemes and AnsiConsoleThemes 类.

中找到