Python logging根据时间创建日志文件

一、配置文件

# 定义logger模块,root是父类,必需存在的,其它的是自定义。
# logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印
# name 中用 . 表示 log 的继承关系
[loggers]
keys=root,simpleExample
# 设置hand-变量名 key值下面具体设置
[handlers]
keys=fileHandler,consoleHandler,fileHandler1
# 设置输出格式-变量名 key值下面具体设置
[formatters]
keys=simpleFormatter
# 生效的 hand变量
[logger_root]
# 实现上面定义的logger模块,必需是[logger_xxxx]这样的形式

# [logger_xxxx] logger_模块名称
# level     级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL
# handlers  处理类,可以有多个,用逗号分开
# qualname  logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。
# propagate 是否继承父类的log信息,0:否 1:是
level=DEBUG
handlers=fileHandler1,fileHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
# 头输出格式,需要先设置-hand变量
[handler_consoleHandler]
# [handler_xxxx]
# class handler类名
# level 日志级别
# formatter,上面定义的formatter
# args handler初始化函数参数
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter
# 头输出格式,需要先设置-hand变量
[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-error', 'D', 1, 30)
level=ERROR
formatter=simpleFormatter

# 头输出格式,需要先设置-hand变量
[handler_fileHandler1]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-info', 'D', 1, 30)
level=INFO
formatter=simpleFormatter
# 输出格式-需要先设置-格式变量名
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt= %y-%m-%d %H:%M:%S
# 时间格式

二、创建日志对象

import logging.config
import os
import time
#######################################################
# 日志配置
# 读取日志配置文件内容
logging.config.fileConfig("logging.conf", defaults={'fileName': 'logs'})
# 创建一个日志器logger
logger = logging.getLogger("simpleExample")
# 创建日志文件
for i in range(0, 10):
    logging.debug("logging.debug")
    logging.info("logging.info")
    logging.warning("logging.warning")
    logging.error("logging.error")
    
    
    time.sleep(2)

三、TimedRotatingFileHandler说明

TimedRotatingFileHandler构造函数声明
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)
filename    日志文件名前缀
when        日志名变更时间单位
    'S' Seconds
    'M' Minutes
    'H' Hours
    'D' Days
    'W0'-'W6' Weekday (0=Monday)
    'midnight' Roll over at midnight
interval    间隔时间,是指等待N个when单位的时间后,自动重建文件
backupCount 保留日志最大文件数,超过限制,删除最先创建的文件;默认值0,表示不限制。
delay       延迟文件创建,直到第一次调用emit()方法创建日志文件
atTime      在指定的时间(datetime.time格式)创建日志文件。
posted @ 2021-06-10 11:37  hziwei  阅读(2354)  评论(0编辑  收藏  举报