Skip to content

日志级别

数据墙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完全静默禁用特定组件日志

优先级规则

日志级别遵循"最具体匹配优先"原则:

  1. 首先匹配完整的类名或命名空间路径。
  2. 如果指定的命名空间下有更具体的匹配,使用更具体的值。
  3. 没有匹配到任何命名空间规则时,使用 default 值。
  4. default 也未设置时,取决于主机模式:Development 默认 DebugProduction 默认 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.SqlQueryEngineSQL 查询生成和执行
Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor数据库执行和查询耗时
Azure.DataApiBuilder.Service.HealthCheck.ComprehensiveHealthReportResponseWriter健康端点报告组合问题
Azure.DataApiBuilder.Service.Controllers.RestControllerREST 请求路由和错误
Azure.DataApiBuilder.Auth.IAuthorizationResolver授权决策和角色评估
Microsoft.AspNetCore.Authorization.IAuthorizationHandlerASP.NET Core 授权管道

热重载

日志级别支持动态更新,无需重启服务。修改配置文件中的 log-level 后,引擎会在运行时检测并应用新的日志级别。

这在实际运维中非常有用——平时保持 Warning 减少日志量,出现问题时刻将特定命名空间调至 Debug 获取详细诊断信息,问题解决后调回。

生产环境建议

环境建议默认级别原因
开发DebugInformation需要详细信息辅助开发
测试Information验证请求路由和权限
生产Error仅记录操作失败,减少日志量

生产环境中不建议使用 TraceDebug,每秒大量请求时详细日志会占用大量 I/O 和存储。

下一步

数据墙DBW 产品文档与开发指南。