在Python中将日志文件名存储在哪里?

4 投票
2 回答
2363 浏览
提问于 2025-04-16 06:30

我有一个Python程序,它由几个模块组成。这个“主”模块创建了一个文件变量log_file,用来记录输出;其他所有模块也需要往这个文件里写东西。

不过,我不想把“主”模块导入到其他模块里,因为这样会造成很奇怪的依赖关系(更别提可能会因为循环依赖而无法正常工作)。

那么,我应该把log_file变量放在哪里呢?

编辑:

根据@pyfunc的回答,这样做可以吗:

--- config.py ---
# does not mention log_file
# unless it's required for syntax reasons; in which case log_file = None
# ...

--- main.py ---
from datetime import datetime
import config.py
log_filename = str(datetime.now()) + '.txt'
config.log_file = open(log_filename, 'w')
# ...

--- another_module.py ---
import config.py
# ...
config.log_file.write(some_stuff)

2 个回答

2

把“全局”变量放在一个“设置”模块里。

settings.py

log_file = "/path/to/file"

main.py

import settings
import logging
logging.basicConfig(filename=settings.log_file,level=logging.DEBUG)

logging.debug("This should go to the log file")

other_module.py

import logging
logging.debug("This is a message from another place.")

虽然日志模块可以解决你眼前的问题以及很多其他问题,但设置模块的方式除了日志文件名之外还有很多用处。比如,Django就是用这个来配置几乎所有的东西。

1

一种方法是把所有那些代码放到另一个模块里,这样你就可以在主文件和其他模块中导入它。

希望你已经查看过这个链接: http://docs.python.org/library/logging.html

撰写回答