日志策略
AgileLabs Framework 默认使用 Serilog。日志体系分为两部分:
- Bootstrap Logger:由
AppBootstrapper创建,负责记录宿主启动到 DI 建立前的日志。 - 常规 Logger:通过
UseSerilog、services.AddSerilog()注入,覆盖应用运行期。
启用与配置
await AgileLabApplication.StartApplicationAsync(options =>
{
options.BootstrapLoggerConfiguration = logger =>
{
logger.MinimumLevel.Debug();
logger.WriteTo.Console();
};
options.ConfigureLoggingBuilder = (builder, context) =>
{
builder.AddConsole();
};
});
AgileLabs.Logging.SerilogConfigureExtensions.ConfigureSerilog会根据IHostEnvironment和IConfiguration自动加载配置。- 开发环境默认把
LoggingLevelControl.LevelSwitch.MinimumLevel设置为Debug。
环境变量
| 变量 | 说明 |
|---|---|
LOG_MINI_LEVEL |
强制覆盖最小日志级别(如 Information、Warning)。 |
LOG_FILE |
当值为 true 或在 Windows 上运行时,会在 app_data/applog/{yyyyMMdd}_{MachineName} 写入滚动日志。 |
AG_APP_DATA |
自定义 app_data 路径,影响日志目录。 |
结构化日志
- 默认输出模板包含
TraceId、SpanId,便于与 WorkContext/Activity 对齐。 - 推荐在业务代码中使用
ILogger<T>注入,避免直接依赖 Serilog 静态 API。
常见问题
- 日志量过大:使用
LoggingLevelControl.LevelSwitch.MinimumLevel = LogEventLevel.Warning;动态调节。 - 需要额外 Sink:在
BootstrapLoggerConfiguration或ConfigureLoggingBuilder中添加WriteTo.Seq()、WriteTo.Elasticsearch()等。 - 与 ASP.NET Core 默认日志并存:
UseSerilogProvider = true时自动替换默认 Provider;如需并存,可设置为false并手动注册 Provider。
延伸阅读: