日志级别
数据墙DBW 支持分层的日志级别控制,允许你为全局设置基准级别,同时为特定组件或命名空间单独调整。日志级别可以在运行时热重载,无需重启服务。
配置结构
日志级别在 runtime.telemetry.log-level 中配置。你可以设置全局默认级别和针对特定命名空间的覆盖:
json
{
"runtime": {
"telemetry": {
"log-level": {
"default": "Warning",
"Azure.DataApiBuilder.Core": "Information",
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "Debug"
}
}
}
}日志级别
数据墙DBW 使用标准的日志级别体系,从最详细到最精简:
| 级别 | 用途 | 典型场景 |
|---|---|---|
Trace | 最详细,含方法入口/出口 | 深度问题排查、逐步骤跟踪 |
Debug | 调试诊断信息 | 开发阶段、配置验证 |
Information | 常规操作事件 | 服务启动/停止、请求计数 |
Warning | 需关注的异常情况 | 非致命错误、降级行为 |
Error | 操作失败 | 数据库连接失败、权限拒绝 |
Critical | 系统级严重故障 | 进程崩溃、不可恢复错误 |
None | 完全静默 | 禁用特定组件日志 |
优先级规则
日志级别遵循"最具体匹配优先"原则:
- 首先匹配完整的类名或命名空间路径。
- 如果指定的命名空间下有更具体的匹配,使用更具体的值。
- 没有匹配到任何命名空间规则时,使用
default值。 default也未设置时,取决于主机模式:Development默认Debug,Production默认Error。
命名空间匹配规则:匹配必须在 . 分隔符处结束。例如 Azure.DataApiBuilder.Core 可以匹配 Azure.DataApiBuilder.Core.Resolver,但不能匹配 Azure.DataApiBuilder.CoreExtra。
配置方式
JSON 配置
json
{
"runtime": {
"telemetry": {
"log-level": {
"default": "Warning",
"Azure.DataApiBuilder.Core": "Information"
}
}
}
}CLI 配置
bash
# 设置默认级别
dab configure --runtime.telemetry.log-level.default "Warning"
# 设置特定命名空间级别
dab configure --runtime.telemetry.log-level.Azure.DataApiBuilder.Core "Information"启动参数
也可以通过 --LogLevel 参数在启动时指定:
bash
dab start --LogLevel Debug启动参数的优先级最高,会覆盖配置文件中的设置。
常用命名空间
排查问题时常用的过滤命名空间:
| 命名空间 | 用途 |
|---|---|
default | 所有未明确指定级别的组件的基准 |
Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator | 配置验证错误和架构问题 |
Azure.DataApiBuilder.Core.Resolvers.SqlQueryEngine | SQL 查询生成和执行 |
Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor | 数据库执行和查询耗时 |
Azure.DataApiBuilder.Service.HealthCheck.ComprehensiveHealthReportResponseWriter | 健康端点报告组合问题 |
Azure.DataApiBuilder.Service.Controllers.RestController | REST 请求路由和错误 |
Azure.DataApiBuilder.Auth.IAuthorizationResolver | 授权决策和角色评估 |
Microsoft.AspNetCore.Authorization.IAuthorizationHandler | ASP.NET Core 授权管道 |
热重载
日志级别支持动态更新,无需重启服务。修改配置文件中的 log-level 后,引擎会在运行时检测并应用新的日志级别。
这在实际运维中非常有用——平时保持 Warning 减少日志量,出现问题时刻将特定命名空间调至 Debug 获取详细诊断信息,问题解决后调回。
生产环境建议
| 环境 | 建议默认级别 | 原因 |
|---|---|---|
| 开发 | Debug 或 Information | 需要详细信息辅助开发 |
| 测试 | Information | 验证请求路由和权限 |
| 生产 | Error | 仅记录操作失败,减少日志量 |
生产环境中不建议使用 Trace 或 Debug,每秒大量请求时详细日志会占用大量 I/O 和存储。
