美文网首页
python日志模块

python日志模块

作者: 风驰电掣一瓜牛 | 来源:发表于2017-06-01 14:12 被阅读0次

    目前有一种需求是启动一个server,记录每天的访问情况,查下了下资料,用python的logging模块可以实现。

    具体来说是使用TimedRotatingFileHandler 这个文件处理器,代码如下:

    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    
    log_path = "./log/run.log"
    fh = logging.handlers.TimedRotatingFileHandler(filename=log_path, when='midnight', backupCount=5)
    fh.suffix = "%Y-%m-%d"
    fh.setLevel(logging.DEBUG)
    
    fmt = "%(asctime)-15s %(filename)s:%(lineno)d %(levelname)s %(message)s"
    datefmt = "%Y-%m-%d %H:%M:%S"
    formatter = logging.Formatter(fmt, datefmt)
    
    fh.setFormatter(formatter)
    logger.addHandler(fh)
    

    一般通过模块名称获取logger,这样有一种层级关系,可以继承上层模块的设置。

    TimedRotatingFileHandler()的第一个参数filename设定日志路径;when设定循环日志的更新时间,一般设置为midnight比较好,即每天凌晨0点更新,网上说设定其他的值会有些坑,时间上会有些不一致;bacupCount设定循环周期内的文件数。

    采用上面代码中的设定,运行后会在log目录下创建日志文件run.log,当天产生的日志会输出到这个文件,到凌晨这个文件会变成昨天日期的文件。因为backupCount设置为5,所以最后log目录下会始终保持6个文件:

    run.log.2017-06-01
    run.log.2017-06-02
    run.log.2017-06-03
    run.log.2017-06-04
    run.log.2017-06-05
    run.log
    

    还有很多其他的日志处理器,可以根据不同的用处设定。

    另外日志模块还可以涉及多线程,多模块,添加过滤器,从json或yaml文件读取配置等技术点,有需要再深入学习下。

    其他参考:

    相关文章

      网友评论

          本文标题:python日志模块

          本文链接:https://www.haomeiwen.com/subject/flfefxtx.html