我正在尝试实现名为TimedRotatingFileHandler的python日志记录处理程序.
当它翻到午夜时,它将以当前日期的形式添加:"YYYY-MM-DD".
LOGGING_MSG_FORMAT = '%(name)-14s > [%(levelname)s] [%(asctime)s] : %(message)s'
LOGGING_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(
level=logging.DEBUG,
format=LOGGING_MSG_FORMAT,
datefmt=LOGGING_DATE_FORMAT
)
root_logger = logging.getLogger('')
logger = logging.handlers.TimedRotatingFileHandler("C:\\logs\\Rotate_Test",'midnight',1)
root_logger.addHandler(logger)
while True:
daemon_logger = logging.getLogger('TEST')
daemon_logger.info("SDFKLDSKLFFJKLSDD")
time.sleep(60)
Run Code Online (Sandbox Code Playgroud)
创建的第一个日志文件仅称为"Rotate_Test",然后一旦翻转到第二天,它将文件名更改为:"Rotate_Test.YYYY-MM-DD"其中YYYY-MM-DD是当前日期.
我怎样才能改变它改变文件名的方式?我用Google搜索并查看了API,几乎找不到任何东西.
S.L*_*ott 36
"我怎样才能改变它改变文件名的方式?"
由于没有记录,我选择阅读来源.这是我从阅读的源头得出的结论logging/handlers.py
handler = logging.handlers.TimedRotatingFileHandler("C:\\isis_ops\\logs\\Rotate_Test",'midnight',1)
handler.suffix = "%Y-%m-%d" # or anything else that strftime will allow
root_logger.addHandler(handler)
Run Code Online (Sandbox Code Playgroud)
后缀是格式化字符串.
小智 8
在Python 3.8中,您可以更改提供的“self.namer”,以便您可以在旋转时对文件名进行任何操作。像这样的东西:
def my_namer(default_name):
# This will be called when doing the log rotation
# default_name is the default filename that would be assigned, e.g. Rotate_Test.txt.YYYY-MM-DD
# Do any manipulations to that name here, for example this changes the name to Rotate_Test.YYYY-MM-DD.txt
base_filename, ext, date = default_name.split(".")
return f"{base_filename}.{date}.{ext}"
logger = logging.handlers.TimedRotatingFileHandler("C:\\logs\\Rotate_Test",'midnight',1)
logger.namer = my_namer
root_logger.addHandler(logger)
Run Code Online (Sandbox Code Playgroud)
您可以通过更改上面建议的日志后缀来做到这一点,但您还需要更改 extMatch 变量以匹配后缀以查找旋转文件:
handler.suffix = "%Y%m%d"
handler.extMatch = re.compile(r"^\d{8}$")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24052 次 |
最近记录: |