Как передать часовой пояс регистратору с пользовательским часовым поясом - PullRequest
0 голосов
/ 17 марта 2020

У меня есть 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, чтобы мне не приходилось жестко кодировать часовой пояс в методе

...