agilelabs-fx-docs main features/logging.md

日志策略

AgileLabs Framework 默认使用 Serilog。日志体系分为两部分:

  1. Bootstrap Logger:由 AppBootstrapper 创建,负责记录宿主启动到 DI 建立前的日志。
  2. 常规 Logger:通过 UseSerilogservices.AddSerilog() 注入,覆盖应用运行期。

启用与配置

await AgileLabApplication.StartApplicationAsync(options =>
{
    options.BootstrapLoggerConfiguration = logger =>
    {
        logger.MinimumLevel.Debug();
        logger.WriteTo.Console();
    };
    options.ConfigureLoggingBuilder = (builder, context) =>
    {
        builder.AddConsole();
    };
});
  • AgileLabs.Logging.SerilogConfigureExtensions.ConfigureSerilog 会根据 IHostEnvironmentIConfiguration 自动加载配置。
  • 开发环境默认把 LoggingLevelControl.LevelSwitch.MinimumLevel 设置为 Debug

环境变量

变量 说明
LOG_MINI_LEVEL 强制覆盖最小日志级别(如 InformationWarning)。
LOG_FILE 当值为 true 或在 Windows 上运行时,会在 app_data/applog/{yyyyMMdd}_{MachineName} 写入滚动日志。
AG_APP_DATA 自定义 app_data 路径,影响日志目录。

结构化日志

  • 默认输出模板包含 TraceIdSpanId,便于与 WorkContext/Activity 对齐。
  • 推荐在业务代码中使用 ILogger<T> 注入,避免直接依赖 Serilog 静态 API。

常见问题

  1. 日志量过大:使用 LoggingLevelControl.LevelSwitch.MinimumLevel = LogEventLevel.Warning; 动态调节。
  2. 需要额外 Sink:在 BootstrapLoggerConfigurationConfigureLoggingBuilder 中添加 WriteTo.Seq()WriteTo.Elasticsearch() 等。
  3. 与 ASP.NET Core 默认日志并存UseSerilogProvider = true 时自动替换默认 Provider;如需并存,可设置为 false 并手动注册 Provider。

延伸阅读: