python中logging使用方法

python中logging使用方法

原文链接:[https://www.cnblogs.com/lixiaoting/p/11131289.html]

1.logging提供了一组便利的函数,用来做简单的日志。它们是 debug()、 info()、 warning()、 error() 和 critical()。

1.1logging以严重程度递增排序:

DEBUG:详细信息,一般只在调试问题时使用

INFO:证明事情按预期工作

WARNING:某些没有预料到的时间提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足,但是软件还是会照常运作

ERROR:由于更严重的问题,软件已不能执行一些功能了

CRITICAL:严重错误,表明软件已不能继续运行了

级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUG

默认等级是WARNING

1.2打印到控制台

import logging
logging.debug(‘debug 信息’)
logging.warning(‘只有这个会输出。。。’)
logging.info(‘info 信息’)
由于默认设置的等级是warning,所有只有warning的信息会输出到控制台。

WARNING:root:只有这个会输出。。。
利用logging.basicConfig()打印信息到控制台

import logging
logging.basicConfig(format=’%(asctime)s - %(pathname)s[line:%(lineno)d] ’
‘- %(levelname)s: %(message)s’,level=logging.INFO)
logging.debug(‘debug 信息’)
logging.info(‘info 信息’)
logging.warning(‘warning 信息’)
logging.error(‘error 信息’)
logging.critical(‘critial 信息’)

所以如果设置level = logging.debug()的话,所有的信息都会会输出到控制台。

所以如果设置level = logging.info()的话,debug 的信息则不会输出到控制台。

1.3既往屏幕中写入,也往文件写入log

loggin库采用了模块化的设计,提供了许多组件:记录器(logger),处理器(handler),过滤器(filter),格式化器(formatter)

Logger 暴露了应用程序代码能直接使用的接口。

Handler将(记录器产生的)日志记录发送至合适的目的地。

Filter提供了更好的粒度控制,它可以决定输出哪些日志记录。

Formatter 指明了最终输出中日志记录的布局

loggers:要做三件事情。首先,它们向应用代码暴露了许多方法,这样应用可以在运行时记录消息。其次,记录器对象通过严重程度
(默认的过滤设施)或者过滤器对象来决定哪些日志消息需要记录下来。第三,记录器对象将相关的日志消息传递给所有感兴趣的日志处理器。
Loggers的使用方法 :
  Logger.setLevel()指定logger将会处理的最低的安全等级日志信息, debug是最低的内置安全等级,critical是最高的内建安全等级。
  Logger.addHandler()和Logger.removeHandler()从记录器对象中添加和删除处理程序对象。处理器详见Handlers。
  Logger.addFilter()和Logger.removeFilter()从记录器对象添加和删除过滤器对象。
handlers:处理程序对象负责将适当的日志消息(基于日志消息的严重性)分派到处理程序的指定目标。Logger 对象可以通过addHandler()方法
增加零个或多个handler对象。举个例子,一个应用可以将所有的日志消息发送至日志文件,所有的错误级别(error)及以上的日志消息发送至
标准输出,所有的严重级别(critical)日志消息发送至某个电子邮箱。在这个例子中需要三个独立的处理器,每一个负责将特定级别的消息发
送至特定的位置。
handlers的使用方法:
logging.StreamHandler() -> 控制台输出
logging.FileHandler(filename[,mode]) -> 文件输出
logging.handlers.RotatingFileHandler( filename[, mode[, maxBytes[, backupCount]]]) -> 按照大小自动分割日志文件,一旦达到指定的大小重新生成文件
maxBytes用于指定日志文件的最大文件大小。如果maxBytes为0,意味着日志文件可以无限大,这时上面描述的重命名过程就不会发生。
backupCount用于指定保留的备份文件的个数。
logging.handlers.TimedRotatingFileHandler( filename [,when [,interval [,backupCount]]]) -> 按照时间自动分割日志文件

配置方法:

setLevel()方法和日志对象的一样,指明了将会分发日志的最低级别。为什么会有两个setLevel()方法?记录器的级别决定了消息是否要传递给处理器。每个处理器的级别决定了消息是否要分发。
setFormatter()为该处理器选择一个格式化器。
addFilter()和removeFilter()分别配置和取消配置处理程序上的过滤器对象。

使用流程图:

先获取记录器:
self.logger=logging.getLogger()
设置日志等级
self.logger.setLevel(level)
设置日志输出格式
fmt=’%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s’
format_str = logging.Formatter(fmt)
获取处理器
sh=logging.StreamHandler()
设置处理器的日志输出格式
sh.setFormatter(format_str)
添加到处理器中
self.logger.addHandler(sh)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python logging 模块是 Python 标准库提供的一个日志记录工具,它可以用来记录应用程序运行时的信息,便于开发人员排查问题和分析程序性能。 使用 Python logging 模块,需要先导入 logging 模块,然后创建一个 logger 对象,通过配置 logger 的不同 handler,可以控制不同级别的日志输出到不同的地方。 下面是一个简单的使用示例: ```python import logging # 创建一个 logger 对象 logger = logging.getLogger(__name__) # 配置 logger 的 handler handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) # 设置 logger 的日志级别 logger.setLevel(logging.INFO) # 记录日志 logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在上面的示例,我们首先创建了一个名为 `__name__` 的 logger 对象,然后配置了一个输出到标准输出的 handler,并设置了日志级别为 `INFO`。接着我们分别记录了不同级别的日志信息,最终输出的日志信息如下: ``` 2021-08-25 16:09:59,757 - __main__ - INFO - This is an info message 2021-08-25 16:09:59,757 - __main__ - WARNING - This is a warning message 2021-08-25 16:09:59,757 - __main__ - ERROR - This is an error message 2021-08-25 16:09:59,757 - __main__ - CRITICAL - This is a critical message ``` 可以看到,只有日志级别大于或等于 `INFO` 的日志信息被输出到了标准输出。如果我们希望将日志信息输出到文件,可以配置一个输出到文件的 handler,如下所示: ```python import logging # 创建一个 logger 对象 logger = logging.getLogger(__name__) # 配置 logger 的 handler handler = logging.FileHandler('example.log', mode='w') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) # 设置 logger 的日志级别 logger.setLevel(logging.INFO) # 记录日志 logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在上面的示例,我们将日志信息输出到了名为 `example.log` 的文件。需要注意的是,如果文件不存在,将会被创建,如果文件已存在,将会被覆盖。如果想要追加日志信息而不是覆盖文件,可以将 `mode` 参数设置为 `'a'`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值