日志配置

特性介绍

MindIE Motor 日志能力基于三方件logging能力增强。

通过修改user_config.json配置文件后即可通过deploy.py脚本完成服务部署,业务运行均会保留日志。日志持久化磁盘为可选配置项,默认为非持久化磁盘。

配置指导

MindIE Motor开启日志持久化需修改user_config.json配置文件后,通过deploy.py脚本即可完成服务部署,具体流程如下。

配置user_config.json

MindIE Motor快速开始中实例user_config.json为参考基线,开启日志持久化的配置片段如下:

{
  "motor_controller_config": {
    "logging_config": {
      "log_level": "INFO",
      "log_max_line_length": 8192,
      "log_format": "(%(processName)s pid=%(process)d) %(levelname)s %(asctime)s [%(name)s][%(fileinfo)s:%(lineno)d] %(message)s",
      "log_date_format": "%m-%d %H:%M:%S",
      "host_log_dir": "/root/ascend/log/motor",
      "log_rotation_size": 10,
      "log_rotation_count": 10,
      "log_compress": false,
      "log_compress_level": 6,
      "log_max_total_size": 200,
      "third_party_log_levels": {"default": "WARNING"}
    }
  }
}

logging_config配置项可补充在motor_controller_configmotor_coordinator_configmotor_nodemanger_config三个配置项下。 logging_config配置项说明:

  • log_level:日志级别,可选:DEBUGINFOWARNINGERRORCRITICAL,默认为INFO
  • log_max_line_length:日志行最大长度,默认为8192
  • log_format:日志格式,默认为(%(processName)s pid=%(process)d) %(levelname)s %(asctime)s [%(name)s][%(fileinfo)s:%(lineno)d] %(message)s
  • log_date_format:日志时间格式,默认为%m-%d %H:%M:%S
  • host_log_dir:日志保存目录,默认为/root/ascend/log/motor,持久化到该文件夹。
  • log_rotation_size:单个日志文件最大值,默认10,单位为MB,超过此大小则进行日志轮转
  • log_rotation_count:日志文件最大数量,默认10个(压缩日志同样生效),超过此数量则进行日志轮转
  • log_compress:是否开启日志压缩,默认为false。开启后轮转的日志文件会进行压缩,为.gz格式
  • log_compress_level:日志压缩等级,默认6。取值范围1-9,数字越大压缩效果越好,但压缩速度越慢
  • log_max_total_size:单组件单线程日志文件最大总大小,默认200,单位为MB,超过此大小历史日志文件会进行删除
  • third_party_log_levels:三方库日志级别控制,默认 {"default": "WARNING"}"default" 键为未显式指定的三方库 logger 应用默认级别(DEBUG/INFO/WARNING/ERROR);可通过 "<logger_name>": "<level>" 对特定库单独覆盖,配置为 null 时退化为默认行为。

可单独配置的三方库 logger 常见清单:

logger 名 对应库 说明
httpx httpx HTTP 客户端
httpcore httpcore HTTP 核心传输层
urllib3 urllib3 HTTP 连接池
uvicorn.error uvicorn ASGI 服务器错误日志
uvicorn.access uvicorn ASGI 服务器访问日志(推荐设为 WARNING 以上)
fastapi FastAPI Web 框架
grpc grpcio gRPC 框架
asyncio asyncio 异步 IO

以上为项目中常见的三方库 logger。_suppress_noisy_third_party_loggers() 会遍历运行时所有已注册的非 motor logger,不只是上表所列。新增三方依赖后无需修改配置即可自动覆盖。

当log_max_total_size和log_rotation_count同时配置时,达到任意一个条件时进行日志轮转和日志删除。

注意third_party_log_levels 不受 motor 自身 log_level 的影响——即使 motor 处于 DEBUG 模式,三方库日志默认仍为 WARNING,避免日志刷屏。配置文件热重载(watchdog)时也会同步更新三方库级别。

部署服务

examples/deployer 目录下通过deploy.py脚本部署服务。支持指定配置目录或单独指定配置文件:

cd examples/deployer
# 方式一:指定配置目录(推荐)
python deploy.py --config_dir ../infer_engines/vllm

# 方式二:单独指定配置文件
python deploy.py --user_config_path ../infer_engines/vllm/user_config.json --env_config_path ../infer_engines/vllm/env.json