【发布时间】:2021-11-16 09:24:59
【问题描述】:
我正在尝试使用日志模块在 python3 中每天创建一个日志。
我知道 TimedRotatingFileHandler 模块,但它不能按我的需要工作,它将数据存储在一个固定名称的文件中,并根据后缀重命名它。
我需要根据日期为每条消息定义日志文件名。
我实施的不起作用。使用正确的名称创建日志文件,但第二天,新的文件没有创建,日志仍然写入旧文件。
这是我的工作:
import logging ,coloredlogs,platform
import sys,os
from datetime import datetime
FORMATTER = logging.Formatter("%(asctime)s : %(hostname)s : %(name)s : %(levelname)s : %(message)s")
LOG_FILE = os.environ['RMQ_DISPACHER_LOGFILE']
NICKNAME = os.environ['LOGNICKNAME']
class HostnameFilter(logging.Filter):
hostname = platform.node()
def filter(self, record):
record.hostname = HostnameFilter.hostname
return True
def get_console_handler():
console_handler = logging.StreamHandler(sys.stdout)
console_handler.addFilter(HostnameFilter())
console_handler.setFormatter(FORMATTER)
return console_handler
def get_file_handler():
file_handler = logging.FileHandler( "%s/%s_%s.log" % (LOG_FILE,NICKNAME,datetime.now().strftime('%Y%m%d')) )
file_handler.addFilter(HostnameFilter())
file_handler.setFormatter(FORMATTER)
return file_handler
def get_logger(logger_name):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
logger.addHandler(get_console_handler())
logger.addHandler(get_file_handler())
logger.propagate = False
coloredlogs.install(logger=logger)
return logger
我想知道是否可以使用日志记录模块登录到"%s/%s_%s.log" % (LOG_FILE,NICKNAME,datetime.now().strftime('%Y%m%d'))。
谢谢。
【问题讨论】: