где хранить имя файла журнала в python? - PullRequest
4 голосов
/ 03 ноября 2010

У меня есть программа на Python, состоящая из нескольких модулей. «Основной» модуль создает файловую переменную log_file для регистрации выходных данных; все остальные модули также должны будут записывать в этот файл.

Однако я не хочу импортировать «основной» модуль в другие модули, поскольку это будет очень странная зависимость (не говоря уже о том, что она может даже не работать из-за циклической зависимости).

Где тогда мне хранить переменную log_file?

EDIT:

После ответа @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 голосов
/ 03 ноября 2010

Поместите переменную "global" в модуль "settings".

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 голос
/ 03 ноября 2010

Один из способов - перенести весь этот код в другой модуль, чтобы вы могли импортировать его как в основной файл, так и в другие модули.

Надеюсь, вы отметили: http://docs.python.org/library/logging.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...