日志文件的主要作用是记录了某个时刻,某个地点发生了什么!
对一个程序员而言,日志系统在程序开发、维护的过程中是非常重要的,日志系统可以帮助我们快速定位程序错误发生的时间和位置、以及程序出错的大致原因。在日志信息足够详细的前提下,日志还可以帮助我们分析用户行为,从而更好地为客户爸爸们提供精准有效的服务。
日志级别
碍于服务器I/O的压力,不能将所有的记录都保存下来,所以需要对日志等级进行分级,在python中,日志的级别如下:
上述日志级别:DEBUG < INFO < WARNING < ERROR < CRITICAL; 执行程序时,logging会输出大于等于设置的日志等级的日志,比如设置的INFO,则会输出INFO,WARNING,ERROR, CRITICAL;还有系统会自动在控制台输出大于等于WARNING的日志。
除了上述级别之外,python还可以自定义日志级别,但是不要和系统自带地日志级别重复。
import
控制台输出:
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message
logging.basicConfig()没有填入参数,说明程序员默认系统设置,所以,日志将会在控制台输出,且日志级别大于等于WARNING的日志才会被打印出来。
Python日志流程
logging模块的四大组件:
日志格式
日志格式如下:
日志级别:logger实例:日志消息
例子:WARNING: root: warning message
使用
(**kwargs
logging.basicConfig()函数主要用来设置显示日志信息的最小级别、日志显示的格式和保存日志的位置。
- filename: 保存日志的文件名
- filemode:文件模式。r:只读模式;w:写模式;a:追加模式
- formart:日志输出格式
- datafat:日志中文件输出格式
- level: 日志输出级别
例子:
import
在test.log文件中显示:
2019-09-01 18:16:10 root:DEBUG:This is a debug message
2019-09-01 18:16:10 root:INFO:This is an info message
2019-09-01 18:16:10 root:WARNING:This is a warning message
2019-09-01 18:16:10 root:ERROR:This is an error message
2019-09-01 18:16:10 root:CRITICAL:This is a critical message
如果发生异常,使用上述的INFO,DEBUG...不能将日志打印至指定位置。可以使用下面的函数
logging
例子:
logging
在text.log文件中显示:
(most recent call last
高级使用
在开发过程中使用上面的方法完全足够,不过我将在这里介绍更高级的使用方法。
在python日志流程中我们介绍了python的四大组件,为了方便,我们在这里将四大组件及其功能粘贴在这里。
loggers:在python中使用的是单例模式,即我们只是通过一个接口获得了一个loggers对象,且这个对象在系统只有一个,这个对象就是根对象。
handlers:有时候我们既想让日志在控制台上显示,又想在log文件中显示,且显示的日志等级不一样,如何搞定,当然通过handlers搞定。
filters:过滤级别,控制在控制台中或者log文件中显示的日志等级
formartters:日志输出的格式。
例子:
import
控制台输出:
2019-09-01 18:58:36,756 my_logger WARNING customer warning message
2019-09-01 18:58:36,756 my_logger ERROR customer error message
2019-09-01 18:58:36,756 my_logger CRITICAL customer critical message
log文件输出:
2019-09-01 18:58:36,756 my_logger DEBUG customer debug message
2019-09-01 18:58:36,756 my_logger INFO customer info message
2019-09-01 18:58:36,756 my_logger WARNING customer warning message
2019-09-01 18:58:36,756 my_logger ERROR customer error message
2019-09-01 18:58:36,756 my_logger CRITICAL customer critical message
参考文章
Python日志库logging总结-可能是目前为止将logging库总结的最好的一篇文章