zoukankan      html  css  js  c++  java
  • 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格式)创建日志文件。
    
  • 相关阅读:
    JavaScript学习总结(十一)——Object类详解
    在mysql命令行下执行sql文件
    canal HA配置
    canal 常用配置
    canal 监控数据库表 快速使用
    HashMap 因子对性能的影响
    JVM 调优
    JVM jstat 详解
    Tomcat 异常关闭排查
    Mysql canal 监控数据变化
  • 原文地址:https://www.cnblogs.com/hziwei/p/14870439.html
Copyright © 2011-2022 走看看