在Python中将日志文件名存储在哪里?
我有一个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