You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions v4配置Serilog彩色日志及移除时间戳

解决方案

1. 实现不同数据类型的颜色区分

要达到ASP.NET Core中结构化日志属性按数据类型着色的效果,需调整Serilog控制台Sink的主题和格式化器:

步骤1:添加必要的NuGet包

新增Serilog.Formatting.Compact包,它提供的RenderedCompactJsonFormatter能更好地渲染结构化日志并支持数据类型着色:

<PackageReference Include="Serilog.Formatting.Compact" Version="7.0.0" />

步骤2:修改Serilog配置

将控制台Sink的主题替换为AnsiConsoleTheme.Code(该主题对字符串、数字、日期等不同数据类型有明确的颜色区分),同时使用RenderedCompactJsonFormatter渲染结构化日志:

var logger = new LoggerConfiguration()
    .Enrich.FromLogContext()
    .WriteTo.ApplicationInsights(
        TelemetryConfiguration.CreateDefault(),
        TelemetryConverter.Events,
        LogEventLevel.Information)
    .MinimumLevel.Debug()
    .WriteTo.Console(
        theme: AnsiConsoleTheme.Code,
        formatter: new RenderedCompactJsonFormatter(),
        outputTemplate: "[{Level:u3}] {Message:lj}{NewLine}{Exception}")
    .CreateLogger();

services.AddLogging(configure => configure.AddSerilog(logger, true));

2. 移除灰色长时间戳

日志中的灰色时间戳来自Serilog控制台Sink的默认输出模板,只需自定义outputTemplate并去掉{Timestamp}部分即可。上面的配置中已经移除了Timestamp,你也可以根据需求调整模板,比如保留日志级别、消息、结构化属性和异常:

outputTemplate: "[{Level:u3}] {Message:lj}{Properties:j}{NewLine}{Exception}"

验证效果

在Azure Function中使用ILogger输出结构化日志时,不同数据类型的属性值会自动区分颜色:

_logger.LogInformation("用户 {UserName} 于 {LoginTime} 登录,年龄 {UserAge}", 
    "张三", DateTime.Now, 28);
  • 字符串类型(UserName):绿色
  • 日期类型(LoginTime):青色
  • 数字类型(UserAge):蓝色

内容的提问来源于stack exchange,提问作者user3079834

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:40:15