Python项目中,logging模块的配置使用了 ini 这种配置,也叫做 fileconfig 配置,然后不想把存放 log 文件的目录 硬编码。抽象出来就是怎么给 init 格式配置文件传递参数。
利用 fileConfig 中的 defaults 参数可以实现 文档地址
py文件
import logging
import logging.config
logconf = os.path.join(BASE_DIR, "conf/log.conf")
logging.config.fileConfig(logconf, defaults={'logdir': '/Users/liuzhizhi/test/logs/'})
配置文件
[loggers]
keys=root
[handlers]
keys=stream,file,rotatingFile
[formatters]
keys=form01
[logger_root]
level=DEBUG
handlers=stream,rotatingFile
[handler_stream]
class=StreamHandler
level=DEBUG
formatter=form01
args=(sys.stdout,)
[handler_file]
class=FileHandler
level=DEBUG
formatter=form01
args=('%(logdir)s' + 'portal.log', 'a')
[handler_rotatingFile]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=form01
args=('%(logdir)s' + 'portal.log','D',1,7)
[formatter_form01]
format=%(asctime)s %(name)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter
看到了么 '%(logdir)s'
, 是不是很简单