Python 内置logging 使用详细介绍
简介
logging 是 Python 内置的标准日志记录库,可以方便地将应用程序的日志输出到文件、sys.stderr 或者系统日志或者网络中,而且logging记录器(logger)提供了日志级别(level)区分,这方便了输出多种程度的日志。
logging模块的使用
logging库的基本用法:
1.创建一个 logger。
2.指定 logger 输出格式。
3.创建一个输出到文件的 handler。
4.定义 log 的级别。
5.将 handler 添加到 logger 中。
6.使用 logger 的几个方法输出日志。
示例1:简单使用
下面是一个简单的 logging 应用实例。
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s [%(levelname)s] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='/tmp/myapp.log',
filemode='a')
logging.info('Start app')
logging.warning('Something maybe fail.')
logging.debug('Debugging')
logging.info('Finish')
上面代码说明:
1.日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
,当然也可以自己定义级别。
2.日志信息通过 %(key)s
来代表对应的信息,这些信息在实际生成日志时,会替换为相应的内容,可以自由命名。
3.format 为输出的格式,如上例所示,输出的日志格式为时间,日志级别,和日志信息。
4.datefmt 用于指定输出格式中时间格式。
5.filename 指定日志输出文件。
6.filemode 可指定日志文件的打开模式是 append 还是覆盖。
示例2:advanced configuration
使用 basicConfig 的方法能满足基本的需求,但复杂的应用程序经常需要细节控制和更大的灵活性。下面是每个 logging 组件的对象关系:
Loggers 处理程序1 处理程序2
+--------+ +--------+ +--------+
| My App |----| Handler| | Handler|
+--------+ +--------+ +--------+
Formatter Formatter
下面是一个创建这样的结构的示例:
import logging.config
logging.config.fileConfig('logging.conf')
# create logger
logger = logging.getLogger('simpleExample')
# log messages
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
logging.conf 是进行高级配置的主要方式,我们能完全控制日志记录的行为,包括将日志记录写入多个文件中、配置按大小和时间进行轮换的日志记录处理器、过滤或修改事件。
同时 logging 提供了一些关键组件的相关方法,包括:Filter、Formatter、Handler、Logger 和 LogRecord。
- Filter类允许您更细致地控制哪些日志记录会被发送到哪些处理程序。
- Formatter类定义日志记录输出的实际格式。该类支持任意数量和类型的参数。
- Handler类定义特定日志记录输出的目的地,例如文件、网络套接字或控制台。计划支持更多处理程序类型。
- Logger类代表生成记录消息的源。主要任务是将这些记录消息发送到适当的处理程序。一个Logger实例可以有许多处理程序。
- LogRecord是将记录请求转换为日志记录的工厂方法。一些底层库可能发出为记录请求格式化的原始字符串,而不是具有格式数据的有效字典。
结论
使用 Python 内置的 logging 库能够帮助开发者实现自由度较高的日志记录,不但能日志记录输出到多种形式中,还能自己控制相应的日志等级和格式等配置信息,便于开发者调试应用程序(Debugging),更方便地定位问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 内置logging 使用详细介绍 - Python技术站