#django #logging
#django #ведение журнала
Вопрос:
Я запускаю Django 3.1 в Docker и хочу каждый день входить в разные файлы. У меня запущено несколько cron, а также задачи с сельдереем. Я не хочу входить в один файл, потому что многие процессы будут записывать и отлаживать / читать файл будет сложно.
Если у меня есть задачи cron my_cron_1, my_cron_2, my_cron_3, я хочу иметь возможность войти в файл и добавить дату
MyCron1_2020-12-14.log
MyCron2_2020-12-14.log
MyCron3_2020-12-14.log
MyCron1_2020-12-15.log
MyCron2_2020-12-15.log
MyCron3_2020-12-15.log
MyCron1_2020-12-16.log
MyCron2_2020-12-16.log
MyCron3_2020-12-16.log
В принципе, я хочу иметь возможность передавать имя функции, которая будет записывать данные в файл журнала.
Прямо сейчас у меня есть класс MyLogger
import logging
class MyLogger:
def __init__(self,filename):
# Gets or creates a logger
self._filename = filename
def log(self,message):
message = str(message)
print(message)
logger = logging.getLogger(__name__)
# set log level
logger.setLevel(logging.DEBUG)
# define file handler and set formatter
file_handler = logging.FileHandler('logs/' self._filename '.log')
#formatter = logging.Formatter('%(asctime)s : %(levelname)s: %(message)s')
formatter = logging.Formatter('%(asctime)s : %(message)s')
file_handler.setFormatter(formatter)
# add file handler to logger
logger.addHandler(file_handler)
# Logs
logger.info(message)
Я вызываю класс следующим образом
logger = MyLogger("FirstLogFile_2020-12-14")
logger.log("ONE")
logger1 = MyLogger("SecondLogFile_2020-12-14")
logger1.log("TWO")
FirstLogFile_2020-12-14
будет иметь ОДИН ДВА, но он должен иметь только ОДИН
SecondLogFile_2020-12-14
будет иметь ДВА
Почему это так? Почему журналы записываются в неправильный файл? Что не так с моим кодом?
Комментарии:
1. Вы изобретаете TimedRotatingFileHandler заново ?