Как я могу указать относительный путь в файле конфигурации Python? - PullRequest
7 голосов
/ 11 мая 2010

У меня есть следующий файл для регистрации конфигурации:

[loggers]
keys=root

[handlers]
keys = root

[formatters]
keys = generic

# Loggers
[logger_root]
level = DEBUG
handlers = root

# Handlers
[handler_root]
class = handlers.RotatingFileHandler
args = ("test.log", "maxBytes=1*1024*1024", "backupCount=10")
level = NOTSET
formatter = generic

# Formatters
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S

В разработке это прекрасно работает, но при развертывании приложения test.log пытается записать путь, по которому у меня нет необходимых разрешений.

Итак, мой вопрос: как я могу указать относительный путь в этом файле конфигурации.

1 Ответ

5 голосов
/ 11 мая 2010

Отметьте правильно, ваш путь в файле конфигурации относительно того, какой каталог является текущим, когда выполняется вызов logging.config.fileConfig. Это зависит от деталей вашего метода развертывания.

Возможно, вам потребуется указать абсолютный путь к вашему файлу, добавив префикс «test.log» к каталогу, который, как вы знаете, доступен для записи процессом, выполняющим ваш код.

Еще одной проблемой может быть просто проблема с разрешениями пользователя, под которым запускается процесс Django: обычно при запуске сервера разработки он запускается под вашей учетной записью, и у вас обычно не возникает проблем с разрешениями. При развертывании (скажем, с помощью Apache и mod_wsgi) процесс Apache и / или процесс-демон mod_wsgi запускаются под разными учетными записями, которым может потребоваться разрешение на соответствующую папку.

Если вам нужна дополнительная помощь, пожалуйста, предоставьте более подробную информацию о вашем развертывании в отношении метода, расположения каталога файлов журнала и т. Д.

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