Logging模块
日志记录是跟踪某些软件运行时发生的事件的一种方法。该软件的开发人员将日志调用添加到代码中,以表明发生了某些事件。事件由描述性消息描述,该消息可选地包含变量数据(例如,对于每个事件的发生可能不同的数据)。事件也具有开发人员将其归因于事件的重要性;重要性也可以称为级别或严重性。
日志记录基本方法
诊断问题。
确认代码是否按预期工作。
表明一些意想不到的事情发生了,或说明一些问题在不久的将来(例如低磁盘空间)。
由于一个更严重的问题,程序没能执行一些功能。
一个严重的错误,这表明程序本身可能无法继续运行。
举个栗子
一个简单的栗子
执行输出:
可以看出logging默认Log级别为。
将日志记录到文件
执行后,脚本当前目录会多一个文件。
进阶
logging库采用了模块化的方式,提供了4种类别的组件,分别为: and 。
loggers 提供应用程序代码直接使用的接口。
handlers 用于将日志记录发送到指定的目的位置。
filters 提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)。
formatters 用于控制日志信息的最终输出格式。
loggers
loggers对象有三个功能,首先是向公开方法,方便程序运行时记录日志。其次是根据日志级别来筛选日志,最后,将日志传给符合的handlers。
logger.setLevel() 设置日志级的级别。
logger.addHandler() 从loggers对象中添加handlers对象。
logger.removeHandler() 从loggers对象中删除handlers对象。
logger.addFilter() 从loggers对象中添加filters对象。
logger.removeFilter() 从loggers对象中删除filters对象。
handlers
handler 负责将特定程度的日志级别发送消息到一个特定的位置。
handler.setLevel() 设置日志级的级别,为什么会有两个设置日志级别?logger设置的级别是确定哪种级别的消息将传递给handler,handler设置的级别是确定发送哪种级别的消息。
handler.setFormatter() 设置handler的formatter对象。
addFilter() 将Filter对象添加到handler对象上。
removerFilter() 从handler对象上移除Filter对象。
formatters
格式化程序对象配置日志消息的最终顺序、结构和内容。
filters
Filter可以被Handler和Logger用来做比level更细粒度的、更复杂的过滤功能。Filter是一个过滤器基类,它只允许某个logger层级下的日志事件通过过滤。
示例代码
执行后输出
使用配置的方式:
下面是log.conf文件
py文件
执行后和上面的输出的结果一样。
配置文件的方式相比代码的方式有以下的优点:
代码看上去更加整洁,便于阅读
配置的方式以后修改只需改配置文件,不需要更改代码
实例
现在有以下几个日志记录的需求:
要求将所有级别的所有日志都写入磁盘文件中。
all.log文件中记录所有的日志信息,日志格式为:日期和时间 - 日志级别 - 日志信息。
error.log文件中单独记录error及以上级别的日志信息,日志格式为:日期和时间 - 日志级别 - 文件名[:行号] - 日志信息。
要求all.log在每天凌晨进行日志切割。
all.log
error.log
End
如果你觉得还不错,那就点个赞吧
听说喜欢留言、分享的人
运气都不会差
python笔记侠