|
|
|
|
移动端

3.4.3 配置日志格式

《Python Linux系统管理与自动化运维》第3章打造命令行工具,本章介绍了如何使用Python语言解析ini格式的配置文件以及如何使用Python语言解析命令行参数,紧接着,本章介绍了Python标准库中的logging库,在本章最后,我们介绍了如何使用开源项目打造功能更加强大的命令行工具。本节为大家介绍配置日志格式。

作者:赖明星来源:机械工业出版社|2017-09-28 17:18

3.4.3 配置日志格式

在使用logging记录日志之前,我们可以进行一些简单的配置。如下所示:

  1. #!/usr/local/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. import logging  
  4.  
  5. logging.basicConfig(filename='app.log'level=logging.INFO)  
  6.  
  7. logging.debug('debug message')  
  8. logging.info('info message')  
  9. logging.warn('warn message')  
  10. logging.error('error message')  
  11. logging.critical('critical message') 

执行上面的程序,会在当前目录下产生一个app.log文件。该文件中存在INFO及INFO以上级别的日志记录。

在前面的例子中,我们通过basicConfig方法对日志进行了简单的配置,我们也可以进行更加复杂的日志配置。在这之前,需要先了解logging模块中的几个概念,即 Logger、Handler及Formatter。

Logger:日志记录器,是应用程序中能直接使用的接口;

Handler:日志处理器,用以表明将日志保存到什么地方以及保存多久;

Formatter:格式化,用以配置日志的输出格式。

在典型的使用场景中,一个日志记录器使用一个日志处理器,一个日志处理器使用一个日志格式化。

理解了Logger、Handler和Formatter以后,如何使用这几个对象呢?Python的logging

模块提供了多种方式来配置日志。对于比较简单的脚本,可以直接使用basicConfig在代码中配置日志。对于比较复杂的项目,可以将日志的配置保存到一个配置文件中,然后在代码中使用fileConfig函数读取配置文件。

下面是一个在Python源码中配置日志的例子。在这个例子中,日志文件会保存所有DEBUG级别及以上级别的日志。每一条日志包含了打印日志的时间、日志的级别和日志的内容。如下所示:

  1. #!/usr/local/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. import logging  
  4.  
  5. logging.basicConfig(  
  6.     level=logging.DEBUG,  
  7.     format='%(asctime)s : %(levelname)s : %(message)s',  
  8.     filename="app.log" 
  9. )  
  10.  
  11. logging.debug('debug message')  
  12. logging.info('info message')  
  13. logging.warn('warn message')  
  14. logging.error('error message')  
  15. logging.critical('critical message') 

对于复杂的项目,一般将日志配置保存到配置文件中。例如,下面是一个典型的日志配置文件:

  1. [loggers]  
  2. keys = root 
  3.  
  4. [handlers]  
  5. keys = logfile 
  6.  
  7. [formatters]  
  8. keys = generic 
  9.  
  10. [logger_root]  
  11. handlers = logfile 
  12.  
  13. [handler_logfile]  
  14. class = handlers.TimedRotatingFileHandler  
  15. args = ('app.log', 'midnight', 1, 10)  
  16. level = DEBUG 
  17. formatter = generic 
  18.  
  19. [formatter_generic]  
  20. format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s 

在这个日志配置文件中,我们首先在[loggers]中声明一个名为root的logger、在[handlers]中声明一个名为logfile的handler,并在[formatters]中声明一个名为generic的formatter。然后,我们在[logger_root]中定义root这个logger所使用的handler,在[handler_logfile]中定义handler输出日志的方式、日志文件的切换时间等。最后,在[formatter_generic]中定义了日志的格式,包括日志产生的时间、日志的级别、产生日志的文件名和行号等信息。

有了配置文件以后,在Python代码中使用logging.config模块的fileConfig函数加载日志配置。如下所示:

  1. #!/usr/local/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. import logging  
  4. import logging.config  
  5.  
  6. logging.config.fileConfig('logging.cnf')  
  7.  
  8. logging.debug('debug message')  
  9. logging.info('info message')  
  10. logging.warn('warn message')  
  11. logging.error('error message')  
  12. logging.critical('critical message') 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL Server 2005实现与维护(MCTS教程)

本书是微软认证技术专家(MCTS) 70-431考试的专用教材,全书共21章,围绕着考查目标,通过详尽的描述、大量课程和课后测试,全面介绍了SQL S...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊