开发者可以通过三种方式配置日志记录:
相对第一种,第二种使用配置文件方式更有优势,主要是配置和代码的分离,结构上更清晰,以及非开发者轻松修改日志记录属性的能力。本文将介绍第二种使用配置文件方式记录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://blog.51cto.com/u_15190995/2823849