Python logging简介详解
作者:BQW_ 发布时间:2022-05-12 09:27:02
一、日志级别
1. 级别定义
logging模块提供了5种日志级别,分别为:CRITICAL>ERROR>WARNING>INFO>DEBUG。这些级别具有不同的优先级,其中CRITICAL的优先级最高,而DEBUG的优先级最低。具体来说
debug
:打印所有级别的日志,通常在调试代码过程中使用;info
:打印info、warning、error和critical级别的日志,用于确认代码按预期运行;warning
:打印waring、error和critical级别的日志,用于警示一些情况;error
:打印error和critical级别的日志,用于警示一些严重的错误;critical
:仅打印critical级别日志,用于警示一些非常严重的错误;
2. 简单示例
import logging
# 默认级别为warning
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")
输出:
WARNING:root:Warning
ERROR:root:Error
CRITICAL:root:Critical
3. 指定级别
import logging
# 指定级别为debug,将输出所有级别的日志
logging.basicConfig(level=logging.DEBUG)
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")
输出:
DEBUG:root:Debug
INFO:root:Info
WARNING:root:Warning
ERROR:root:Error
CRITICAL:root:Critical
二、基本概念
1. Logger
Logger是Logging模块的主体,主要职责为:
为程序提供记录日志的接口;(也就是logger具有debug、info、warning、error、critical五个函数)
判断日志所处级别,并判断是否要过滤;
根据日志级别将日志分发至不同的handler
2. Handler
主要职责为:根据日志级别来对日志进行分发。例如根据日志级别来决定将日志分发至屏幕或者文件中。
3. Formatter
用来指定日志的格式。
通常一个Logger可以包含多个Handler,每个Handler可以指定一个Formatter
三、示例
1. 日志输出至控制台
import sys
import logging
logger = logging.getLogger(__name__)
formatter = logging.Formatter("%(asctime)s - %(message)s")
handler = logging.StreamHandler(stream=sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.debug("Debug")
logger.info("Info")
logger.warning("Warning")
logger.error("Error")
logger.critical("Critical")
2. 日志输出至文件
import logging
logger = logging.getLogger(__name__)
formatter = logging.Formatter("%(asctime)s - %(message)s")
# 使用FileHandler就可以将日志输出至文件
handler = logging.FileHandler("./test.log", mode='w')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.debug("Debug")
logger.info("Info")
logger.warning("Warning")
logger.error("Error")
logger.critical("Critical")
四、默认Logger
Logging模块提供了默认的Logger,其不需要显式的来生成Logger、Handler和Formatter等。使用示例
import logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s")
logging.debug("Debug")
logging.info("Info")
logging.warning("Warning")
logging.error("Error")
logging.critical("Critical")
来源:https://blog.csdn.net/bqw18744018044/article/details/120339925
猜你喜欢
- 写了个简洁的隔行变色代码,支持三种动作变化颜色<!DOCTYPE html PUBLIC "-//W3C//DTD XHTM
- 在实际的工作中会经常会用到to_char()、to_date()函数来对时间、日期进行处理。1、to_char()函数的用法1.1、将时间日
- 本文实例讲述了python列表操作之extend和append的区别。分享给大家供大家参考。具体如下:li = ['a',
- 如何提高Request集合的使用效率?以加快程序处理速度: strTitle=Request.Form("Title&q
- 用wdcp官方提供的脚本安装lnamp环境,安装请参考:http://www.wdlinux.cn/bbs/thread-6292-1-1.
- 记得以前写过一篇文章 php有效的过滤html标签,js代码,css样式标签: <?php $str = preg_replace(
- 设计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为
- 在绝大多数查询中,MySQL使用哪种校对规则进行比较是很显然的。例如,在下列情况中,校对规则明显的是“列x的列校对规则”:SELECT&nb
- 编写兼容IE和FireFox的脚本确定的件很烦人的事,今日又经历了一次。一、正式表达式问题试图用以下表达式提取中括号“]”后面的内容,连接调
- 准备工作没有加壳的python编译并打包的exe文件python反打包代码(不知道这样叫是否合理):python-exe-unpacker1
- 很多朋友和我讨论了一些关于网站开发到底使用哪种语言最合适,尤其是到网站一定有一定流量的时候,到底那种web语言更适合做站呢,精灵这里根据自己
- php循环输出26个大小写英文字母for($i=65;$i<91;$i++){ echo strtolower(chr($
- 最近各地中小学都在开展线上教学,有些不自觉的小朋友们用电脑在线学习的时候会趁家长不在的时候偷偷玩游戏、看漫画。本程序screenshot.p
- 我设了两个SESSION:SESSION(A1),SESSION(A2),然后我现在想结束其中一个SESSION(如:ESEEION(A1)
- 基本函数如下:/// <summary> /// 需要分页时使用,根据参数和ConditionExpress获取DataTabl
- 之前写过一篇文章《EmEditor代码片段插件介绍》,现在项目越来越多,越来越大,不再用EmEditor,而用IntelliJ IDEA。这
- 非常不错,大家可以自己应用下。<% '//数据处理部分 dim Content,Num,I,st
- 刚刚看了bootstrap的导航栏,发现有点弄混了,现在来整理一下;导航栏是一个很好的功能,是 Bootstrap 网站的一个突出特点。导航
- PDOStatement::nextRowsetPDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
- SecureFile功能是oracle 11g中对大对象(LOB)存储格式的完全重新设计实现,原来的LOB存储格式现在通称为BASIXFIL