You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sanic==0.8.0配置自定义日志路径后未生成对应日志文件问题咨询

问题原因
  • 处理器类型错误:当前配置中所有日志处理器的类均为logging.StreamHandler,该类仅负责将日志输出到控制台标准流(stdout/stderr),本身不识别filename参数,即使配置了该字段也不会写入文件。
  • 日志级别不匹配:root logger默认配置的级别为INFO,而业务代码中使用logger.debug()输出日志,DEBUG级别优先级低于INFO,默认会被过滤,即使后续配置正确也无法输出DEBUG级别的日志。
  • 冗余配置冲突:应用启动时传入了access_log=False参数,会直接禁用sanic.access日志链路,对应配置的access_console处理器不会生效。
解决方案

直接修改custom_logger的配置,替换处理器类型、调整日志级别即可,修改后的app_runner.py代码如下:

from app_name import create_app_instance
from sanic.log import LOGGING_CONFIG_DEFAULTS

app = create_app_instance()

custom_logger = LOGGING_CONFIG_DEFAULTS
# 替换StreamHandler为FileHandler,删除无用的stream参数
custom_logger['handlers']['access_console']['class'] = 'logging.FileHandler'
custom_logger['handlers']['access_console']['filename'] = '/Users/username/root.log'
del custom_logger['handlers']['access_console']['stream']

custom_logger['handlers']['console']['class'] = 'logging.FileHandler'
custom_logger['handlers']['console']['filename'] = '/Users/username/access.log'
del custom_logger['handlers']['console']['stream']

custom_logger['handlers']['error_console']['class'] = 'logging.FileHandler'
custom_logger['handlers']['error_console']['filename'] = '/Users/username/error.log'
del custom_logger['handlers']['error_console']['stream']

# 调整root日志级别为DEBUG,输出debug级别的日志
custom_logger['loggers']['root']['level'] = 'DEBUG'

if __name__ == '__main__':
    # 如果需要输出access日志,将access_log改为True即可
    app.run(debug=True, log_config=custom_logger, access_log=False)
验证方法

启动应用后访问接口,查看/Users/username目录下是否生成对应的三个日志文件,access.log中会包含代码中输出的DEBUG级别的业务日志。

内容的提问来源于stack exchange,提问作者vector8188

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:21:03