广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中的logging
  • 614
分享到

python中的logging

pythonlogging 2023-01-31 02:01:37 614人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

python logging模块可能会令人困惑的地方通过参阅python logging模块的代码,发现一些有趣的现象: 1. logging对象其实是一个树形结构,每个创建的logging对象都是root logging对象的孩子结点。当

python logging模块可能会令人困惑的地方

通过参阅python logging模块的代码,发现一些有趣的现象:

 

1. logging对象其实是一个树形结构,每个创建的logging对象都是root logging对象的孩子结点。当使用logging模块的getLogger(name=None)函数构造logging对象的时候,如果name为None,这样会产生一个root logging对象。如果name中含有.,比如name = 'a.b.c',通过这种方式会产生3个logging对象,分别为c、b、a,c->b->a->root,root树的根结点,a为root的孩子结点,b为a的孩子结点,c为a的孩子结点,依次类推。

 

2. root结点是全局的,虽然这过程中涉及到多个模块,但是它们会共享一个root结点。

 

3. 每个logging对象打LOG的时候,也会把LOG信息传递到传递到上层logging对象中,对于c->b->a->root这种情况,这个LOG其实会打4次,以c、b、a、root循序依次打一个LOG。

 

可能有人会问,像我之前一般用A模块或者B模块那样的方式去初始化一个logging对象,这样初始化的对象也会是root logging对象的一个孩子,而root logging对象通常会把LOG打到屏幕上,那按理说,正常情况下打LOG都会打两份,一份会打到文件中,一份会打到屏幕中。那为什么实际情况是,只有LOG文件中有对应的LOG,但是屏幕中并没有对象的显示呢?

 

其实,如果对这个过程有些好奇,对直接很习以为常的方式有些怀疑,而且抱着这样的好奇心去探索,相信肯定会有更多的收获。

 

 

所以,比较困惑的是,为什么我调用A模块产生的sLogger.info打出的LOG,只有LOG文件中有,而root logging为什么不打LOG打到屏幕上。为什么root logging不起作用。这个时候,可以看下logging __init__.py的代码,会发现,root logging info的代码如下:

 

 

def info(msg, *args, **kwargs):

    """

    Log a message with severity 'INFO' on the root logger.

    """

    if len(root.handlers) == 0:

        basicConfig()

    root.info(msg, *args, **kwargs)

 

 上面的代码中涉及到root.handlers,怀疑root.handlers跟打LOG的方式有关。因此,print len(root.handlers),发现结果为0。也就是说,默认的root logging对应的handlers为[],这样导致的结果是sLogger打LOG的时候,root logging并不会打任何LOG。



python中的logging模块

记录异常信息

当你使用logging模块记录异常信息时,不需要传入该异常对象,只要你直接调用logger.error() 或者 logger.exception()就可以将当前异常记录下来。

# 记录异常信息
try:
    1 / 0
except:
    # 等同于error级别,但是会额外记录当前抛出的异常堆栈信息
    logger.exception('this is an exception message')
# 2016-10-08 21:59:19,493 ERROR   : this is an exception message
# Traceback (most recent call last):
#   File "D:/git/py_labs/demo/use_logging.py", line 45, in <module>
#     1 / 0
# ZeroDivisionError: integer division or modulo by zero


--结束END--

本文标题: python中的logging

本文链接: https://www.lsjlt.com/news/185420.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中的logging
    python logging模块可能会令人困惑的地方通过参阅python logging模块的代码,发现一些有趣的现象: 1. logging对象其实是一个树形结构,每个创建的logging对象都是root logging对象的孩子结点。当...
    99+
    2023-01-31
    python logging
  • python-logging
    logging.debug('这是一条debug,开始使用日志啦') logging.info('这是一条info,开始使用日志啦') logging.warning('这是一条warning,开始使用日志啦') logging.error...
    99+
    2023-01-31
    python logging
  • python logging Timed
      我的定时任务会在每天早上5点钟调一个交易,交易中日志用的logging模块,今天发现log有问题,排查如下。查看日志的时候发现本应5点打的日志,日志时间却显示为2016-09-12 21:00:02,379 - INFO - novel...
    99+
    2023-01-31
    python logging Timed
  • python logging with
    Recently, I was made a service which can provide a simple way to get best model. so, i spent lot of time to read source...
    99+
    2023-01-31
    python logging
  • Python的Logging模块
    1.日志的相关概念🍃 日志是指记录系统或应用程序运行状态、事件和错误信息的文件或数据。在计算机系统中,日志通常用于故障排除、性能分析、安全审计等方面。日志可以记录各种信息,如系统启动...
    99+
    2023-09-17
    服务器 linux python
  • Python学习-logging
    Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志。logging的日志可以分为debug(),info(),warning(),error()和...
    99+
    2023-01-31
    Python logging
  • Python - logging模块
    logging模块两种配置日志输出格式: 1、 输出如下: 2、 第二种方式如下: 注意 logger = logging.getLogger() 不带参数默认是root用户。 logger1 = logging.getL...
    99+
    2023-01-31
    模块 Python logging
  • Python Logging库HTTP
    Python的logging库是标准库中用来实现日志的库,功能强大,而且使用起来也算是方便。该库提供了很多个不同的Handler,用来对日志进行不同的处理。例如FileHandler用来将日志记录到文件,RotateFileHandle...
    99+
    2023-01-31
    Python Logging HTTP
  • Python logging模块
    logging模块是Python的一个标准库模块,开发过程中,可以通过该模块,灵活的完成日志的记录。 logging模块提供了两种记录日志的方式:    1)使用logging提供的模块级别的函数(logging.basicConfig,...
    99+
    2023-01-31
    模块 Python logging
  • python logging 模块
    python logging模块   import sys  import logging    #首先获得一个类  logger = logging.getLogger('example') #example为名字 logger.setL...
    99+
    2023-01-31
    模块 python logging
  • python Howto之logging
        本文来源于对py2.7.9 docs中howto-logging部分加之源代码的理解。官方文档链接如下,我用的是下载的pdf版本,应该是一致的:https://docs.python.org/2/howto/logging.html...
    99+
    2023-01-31
    python Howto logging
  • python模块--logging
    logging模块                                                                                                               ...
    99+
    2023-01-31
    模块 python logging
  • Python中Logging的作用是什么
    Python中Logging的作用是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象...
    99+
    2023-06-14
  • Python中的logging模块怎么使用
    这篇文章主要介绍“Python中的logging模块怎么使用”,在日常操作中,相信很多人在Python中的logging模块怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的logging...
    99+
    2023-07-06
  • Python中的logging模块如何使用
    一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning级别。1.v1import...
    99+
    2023-05-14
    Python logging
  • python logging输入文件中文
    Python版本3.6 解决方法很简单,在定义Filehandler时指定encoding就好了 import logging file_hanlder = logging.FileHandler(filename='exampl...
    99+
    2023-01-31
    中文 文件 python
  • logging怎么在Python中使用
    本篇文章为大家展示了logging怎么在Python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。logid保存与传递传统做法就是讲 logid 保存在 threading.local 里面,...
    99+
    2023-06-14
  • python的logging模块详解
    日志级别>>>import logging >>>logging.NOTSET 0 >>>logging.DEBUG 10 >>>logging.INFO 20 >...
    99+
    2023-01-31
    详解 模块 python
  • Python标准库 - logging
    编写代码时, 常要跟踪下其运行过程, 记录日志是常用的方式. 较简单的就是print命令打印到终端, 或通过open函数写入文件. 但随着代码量的增加, 该方式不可控的弊端, 也凸显出来, 这也正是logging模块出现的背景.对于logg...
    99+
    2023-01-31
    标准 Python logging
  • 说一说Python logging
    最近有个需求是把以前字符串输出的log 改为json 格式,看了别人的例子,还是有些比较茫然,索性就把logging 整个翻了一边,做点小总结. 初看log 在程序中, log 的用处写代码的你用你知道,l...
    99+
    2022-06-04
    说一说 Python logging
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作