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

如何使用单个configfile.properties配置文件实现多日志文件分别输出?

实现方案

完全可以通过单个configfile.properties配置文件实现不同API日志输出到独立文件的需求,具体修改方式如下:

第一步:修改配置文件

你需要在原有配置基础上新增多个独立的FileHandler,以及对应绑定Handler的Logger实例,修改后的配置示例如下:

[loggers]
keys=root,api1Logger,api2Logger,api3Logger

[handlers]
keys=fileHandler1,fileHandler2,fileHandler3

[formatters]
keys=myFormatter

[logger_root]
level=INFO
handlers=fileHandler1

[logger_api1Logger]
level=INFO
handlers=fileHandler1
propagate=0

[logger_api2Logger]
level=INFO
handlers=fileHandler2
propagate=0

[logger_api3Logger]
level=INFO
handlers=fileHandler3
propagate=0

[handler_fileHandler1]
class=FileHandler
level=INFO
formatter=myFormatter
args=("/opt/myfile1.log",)

[handler_fileHandler2]
class=FileHandler
level=INFO
formatter=myFormatter
args=("/opt/myfile2.log",)

[handler_fileHandler3]
class=FileHandler
level=INFO
formatter=myFormatter
args=("/opt/myfile3.log",)

[formatter_myFormatter]
format=%(process)d-%(levelname)s-%(asctime)s %(name)s->%(funcName)s->%(lineno)-d: %(message)s

配置中的propagate=0是为了避免子Logger的日志同步传递到rootLogger,造成日志重复写入的问题。

第二步:代码中调用对应Logger

加载配置的逻辑不需要改动,只需要在调用不同API的业务代码中,获取对应名称的Logger实例打印日志即可:

import logging
import logging.config    
# 加载配置逻辑保持不变
logging.config.fileConfig(fname='configfile.properties', disable_existing_loggers=False)

# 调用API1时使用该Logger,日志会写入myfile1.log
api1_logger = logging.getLogger("api1Logger")
# 调用API2时使用该Logger,日志会写入myfile2.log
api2_logger = logging.getLogger("api2Logger")
# 调用API3时使用该Logger,日志会写入myfile3.log
api3_logger = logging.getLogger("api3Logger")
  • 后续如果需要新增更多API的独立日志文件,只需按照上述规则新增对应Handler和Logger配置项即可,无需调整配置加载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:36:04