Я создал файл logging.conf, который хорошо работает для одного процесса. Он регистрирует все правильно на правильном файле:Как установить имя файла журнала динамически из сценария?
[loggers]
keys=root
[logger_root]
handlers=screen,file
level=DEBUG
[formatters]
keys=simple,complex
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s
[handlers]
keys=file,screen
[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=7
formatter=complex
level=DEBUG
args=('../logs/my_log.log',)
[handler_screen]
class=StreamHandler
formatter=simple
level=DEBUG
args=(sys.stdout,)
И вот как я получаю свой объект лесоруба внутри моего сценария:
# Create logger
logging.config.fileConfig('../logging.conf')
logger = logging.getLogger()
Проблема заключается в том - Теперь у меня есть более чем один процесс, используя один и тот же сценарий , и оба используют один и тот же файл журнала, что вызывает ошибку параллелизма. Как установить имя файла журнала изнутри моего скрипта? Есть способ установить атрибут args=('../logs/my_log.log',)
в [handler_file]
динамически?
Я понимаю. Проблема в том, что я хотел бы изменить параметр обработчика во время выполнения, а не создавать весь обработчик во время выполнения ... –