python功能模块详述_Python中日志模块Logging模块详述

本文介绍了Python中用于日志记录的标准库logging模块,包括其在诊断和审计功能中的应用。相比于打印,日志提供了更多的诊断信息,并可以通过配置文件或直接在代码中设置不同级别的日志记录。文中列举了使用INI、字典/JSON格式文件以及源码配置日志的方法,并对比了各自的优缺点。通过logging模块,开发者可以灵活控制日志输出,便于后期问题排查和数据分析。
摘要由CSDN通过智能技术生成

Python中的日志模块,使用使用logging模块,该模块自2.3版本开始便是 Python 标准库的一部分。

日志的两个目的:

诊断功能: 记录与应用程序操作相关的日志,方便诊断。

审计功能: 为商业分析而记录的日志,具备审计的功能。

日志 vs 打印

当打印显示帮助文档时,打印无疑是个不错的选择,但是更多情况,都是日志的方式更优秀,原因如下:

日志事件产生的日志记录 ,包含清晰可用的诊断信息,如文件名称、路径、函数名和行号等。

包含日志模块的应用,默认可通过根记录器对应用的日志流进行访问,除非你将日志过滤了。

可通过 logging.Logger.setLevel() 方法有选择地记录日志, 或可通过设置logging.Logger.disabled 属性为True来禁用。

配置日志常用的三种方式:

方式一:使用INI格式文件

1. 配置文件config.ini

[loggers]

keys=root

[handlers]

keys=stream_handler

[formatters]

keys=formatter

[logger_root]

level=DEBUG

handlers=stream_handler

[handler_stream_handler]

class=StreamHandler

level=DEBUG

formatter=formatter

args=(sys.stderr,)

[formatter_formatter]

format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s

2. 在源码中调用logging.config.fileConfig()方法

import logging

from logging.config import fileConfig

fileConfig('logging_config.ini')

logger = logging.getLogger()

logger.debug('often makes a very good meal of %s', 'visiting tourists')

3. 打印输出

2018-09-15 09:34:37,361 root DEBUG often makes a very good meal of visiting tourists

方式二:使用字典或 JSON 格式文件

import logging

from logging.config import dictConfig

logging_config = dict(

version = 1,

formatters = {

'f': {'format':

'%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}

},

handlers = {

'h': {'class': 'logging.StreamHandler',

'formatter': 'f',

'level': logging.DEBUG}

},

root = {

'handlers': ['h'],

'level': logging.DEBUG,

},

)

dictConfig(logging_config)

logger = logging.getLogger()

logger.debug('often makes a very good meal of %s', 'visiting tourists')

方式三:使用源码

import logging

logger = logging.getLogger()

handler = logging.StreamHandler()

formatter = logging.Formatter(

'%(asctime)s %(name)-12s %(levelname)-8s %(message)s')

handler.setFormatter(formatter)

logger.addHandler(handler)

logger.setLevel(logging.DEBUG)

logger.debug('often makes a very good meal of %s', 'visiting tourists')

几种配置文件优缺点比较:

使用INI格式文件:

优点: 使用 logging.config.listen() 函数监听socket,可在运行过程中更新配置

缺点: 通过源码控制日志配置较少( 例如 子类化定制的过滤器或记录器)。

使用字典或JSON格式文件:

优点: 除了可在运行时动态更新,在Python 2.6之后,还可通过 json 模块从其它文件中导入配置。

缺点: 很难通过源码控制日志配置。

使用源码:

优点: 对配置绝对的控制。

缺点: 对配置的更改需要对源码进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值