Python中日志模块Logging模块详述

栏目: Python · 发布时间: 6年前

内容简介:Python中的日志模块,使用使用logging模块,该模块自2.3版本开始便是Python标准库的一部分。当打印显示帮助文档时,打印无疑是个不错的选择,但是更多情况,都是日志的方式更优秀,原因如下:Linux公社的RSS地址:

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 模块从其它文件中导入配置。
  • 缺点: 很难通过源码控制日志配置。

使用源码:

  • 优点: 对配置绝对的控制。
  • 缺点: 对配置的更改需要对源码进行修改。

Linux公社的RSS地址: https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-09/154261.htm


以上所述就是小编给大家介绍的《Python中日志模块Logging模块详述》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

第三次浪潮

第三次浪潮

托夫勒 / 黄明坚 / 中信出版社 / 2006-6 / 38.00元

《第三次浪潮》作者托夫勒在20多年前预见的未来是:跨国企业将盛行;电脑发明使SOHO(在家工作)成为可能;人们将摆脱朝九晚五工作的桎梏;核心家庭的瓦解;DIY(自己动手做)运动的兴起……时过境迁,如今我们才发现托夫勒的预言竟大多已成为了现实。   20年前的《第三次浪潮》在打开国门之初给人们心灵造成的冲击,其影响至今仍然连绵不绝。托夫勒在这本书中将人类社会划分为三个阶段:第一次浪潮为农业阶段......一起来看看 《第三次浪潮》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具