У меня есть TimedRotatingFileHandler, и я хотел бы, чтобы журнал находился в моем пользовательском часовом поясе.
У меня есть следующий код:
import logging
import time
from datetime import datetime
from pytz import timezone
from logging.handlers import TimedRotatingFileHandler
def create_midnight_rotating_log(path, loglevel = logging.INFO , tz =timezone("US/Pacific")):
"""
:param path: path of the log file
:param loglevel: loglevel
:return: logger
:tz timezone of logs
"""
logger = logging.getLogger(path)
logger.setLevel(loglevel)
handler = TimedRotatingFileHandler(path, when="midnight", backupCount=5)
formatter = logging.Formatter(
'%(asctime)s -%(filename)s %(levelname)s : %(message)s',
'%b %d %H:%M:%S')
handler.setFormatter(formatter)
logging.Formatter.converter = timecustom
logger.addHandler(handler)
return logger
def timecustom(*args):
tz=timezone("US/Pacific")
return datetime.now(tz).timetuple()
if __name__ == "__main__":
print("test")
log_file = "cust_relation.log"
logger = create_midnight_rotating_log(log_file)
logger_next = create_midnight_rotating_log("ecr_decomm.log")
for i in range(10):
logger.info("This is a test!")
logger_next.info("testing")
time.sleep(75)
logger.warning("from outside")
В приведенном ниже коде как передать часовой пояс как аргумент? Если я изменяю значение, отличное от * args, оно не запускается.
def timecustom(*args):
tz=timezone("US/Pacific")
return datetime.now(tz).timetuple()
, когда я вызываю вышеуказанный метод как:
logging.Formatter.converter = timecustom
, timecustom вызывается с 2 аргументами. Как передать аргумент с дополнительным аргументом часового пояса в timecustom, чтобы мне не приходилось жестко кодировать часовой пояс в методе