在python中存储日志文件名的位置?

时间:2010-11-03 19:04:39

标签: python module python-3.x

我有一个由几个模块组成的Python程序。 “main”模块创建一个文件变量log_file,用于记录输出;所有其他模块也需要写入该文件。

但是,我不想将“main”模块导入到其他模块中,因为这将是一个非常奇怪的依赖(更不用说它可能因循环依赖而无法工作)。

那么,我应该存储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 个答案:

答案 0 :(得分: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.")

虽然logging module可以解决您的直接问题以及许多其他问题,但设置模块模式对于除日志文件名之外的许多其他事情也很有用。它被Django用来配置几乎所有东西。

答案 1 :(得分:1)

一种方法是将所有代码放入另一个模块中,以便您可以将其导入主文件和其他模块中。

希望您已查看:http://docs.python.org/library/logging.html