• 配置文件方式打印Python程序日志


    开发者可以通过三种方式配置日志记录:

    1. 调用配置方法的Python代码显式创建记录器、处理程序和格式化程序。
    2. 创建日志配置文件并使用fileConfig() 函数读取。
    3. 创建配置信息字典并将其传递给dictConfig()函数。

    相对第一种,第二种使用配置文件方式更有优势,主要是配置和代码的分离,结构上更清晰,以及非开发者轻松修改日志记录属性的能力。本文将介绍第二种使用配置文件方式记录Python程序日志,将Python程序日志分别打印到控制台和日志文件,日志文件按时间戳滚动迭代,且可以自动删除过期文件。

    正文

    首先创建配置文件logging.conf,以下是文件内容。这里主要介绍TimedRotatingFileHandler的配置参数args,第一个参数/var/log/demo3/example.log表示日志输出的文件目录,第二个参数d表示以天为单位迭代日志文件,第三个参数1表示每隔1个周期,第二个参数和第三个参数相乘表示每隔几个周期迭代一个日志文件,第四个参数3表示仅保留三个日志文件,超过该值的日志文件会被自动清除。

    [loggers]
    keys=root
    
    [handlers]
    keys=consoleHandler,timedRotatingFileHandler
    
    [formatters]
    keys=simpleFormatter
    
    [logger_root]
    level=INFO
    handlers=consoleHandler,timedRotatingFileHandler
    
    [handler_consoleHandler]
    class=StreamHandler
    level=INFO
    formatter=simpleFormatter
    args=(sys.stdout,)
    
    [handler_timedRotatingFileHandler]
    class=handlers.TimedRotatingFileHandler
    level=INFO
    formatter=simpleFormatter
    args=('/var/log/demo3/example.log','d',1,3)
    
    [formatter_simpleFormatter]
    format=%(asctime)s %(name)s %(levelname)s - %(message)s
    datefmt=
    

    编写Python程序,使用fileConfig() 函数读取配置文件,测试打印各种类型的日志。可以看出使用配置文件的方式打印日志,程序结构很清晰。

    import logging.config
    logging.config.fileConfig('logging.conf')
    
    # create logger
    logger = logging.getLogger()
    
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warn message')
    logger.error('error message')
    logger.critical('critical message')
    

    运行Python程序,控制台和日志文件输出以下内容:

    2020-11-03 20:50:49,434 simple_example.py INFO - info message
    2020-11-03 20:50:49,435 simple_example.py WARNING - warn message
    2020-11-03 20:50:49,435 simple_example.py ERROR - error message
    2020-11-03 20:50:49,435 simple_example.py CRITICAL - critical message
    

    参考资料

    https://docs.python.org/zh-cn/3/howto/logging.html#logging-advanced-tutorial 进阶日志教程

  • 相关阅读:
    windows server 2008 R2 安装 sql server 2000 遇到的种种问题
    圆心的VPS记录信息
    无法访问.您可能没有权限使用网络资源.局域网无法访问共享,局域网无法访问打印机的一些方法
    win7 32位 fastcgi模式 运行php
    SpringBoot+JPA实例
    马斯洛的锤子论
    一道算法题
    MySQL源码解读之数据结构LF_HASH
    JS学习专辑外传(1)
    WPF 用DynamicResource动态样式切换
  • 原文地址:https://www.cnblogs.com/ljhbjehp/p/13987073.html
Copyright © 2020-2023  润新知