Python logging简介详解

目录
  • 一、日志级别
    • 1. 级别定义
    • 2. 简单示例
    • 3. 指定级别
  • 二、基本概念
    • 1. Logger
    • 2. Handler
    • 3. Formatter
  • 三、示例
    • 1. 日志输出至控制台
    • 2. 日志输出至文件
  • 四、默认Logger
  • 总结

一、日志级别

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")

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Python日志模块logging简介

    logging分为4个模块: loggers, handlers, filters, and formatters. ●loggers: 提供应用程序调用的接口 ●handlers: 把日志发送到指定的位置 ●filters: 过滤日志信息 ●formatters: 格式化输出日志 Logger Logger.setLevel() 设置日志级别 Logger.addHandler()和Logger.removeHandler() 增加和删除日志处理器 Logger.addFilter()和Log

  • Python接口自动化浅析logging封装及实战操作

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging日志原理及模块操作流程,主要介绍日志相关概念及logging日志模块的操作流程. 而在此之前介绍过yaml封装,数据驱动.配置文件.日志文件等独立的功能,我们将这些串联起来,形成一个完整的接口测试流程. 以下主要介绍将logging常用配置放入yaml配置文件.logging日志封装及结合登录用例讲解日志如何在接口测试中运用. 一.yaml配置文件 将日志中的常用配置,比如日志器名称.日志器等级及格式化放在配置文

  • Python的logging模块基本用法

    在服务器部署时,往往都是在后台运行.当程序发生特定的错误时,我希望能够在日志中查询.因此这里熟悉以下 logging 模块的用法. logging 模块定义了报告错误和状态信息的标准 API. logging 的组件 日志系统有 4 个相互交互的组件.我们需要使用 Logger 实例来向日志添加信息.触发日志会创建一个 LogRecord,用于内存中存储信息.Logger 可能有很多 Handler 对象,用于接收和处理日志记录.Handler 使用 Formatter 来输出日志记录. 向文件

  • Python基础之logging模块知识总结

    前言 logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级.日志保存路径等. 可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不显示大量的调试信息 logging 可以决定将信息输出位置和内容 logging 线程更安全 一.日志级别 级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG debug : 打印全部日志,详细信息,通常只出现在诊断问题 info : 打印info

  • Python 解决logging功能使用过程中遇到的一个问题

    现象: 生产中心进行拷机任务下了300个任务,过了一阵时间后发现任务不再被调度起来,查看后台日志发现日志输出停在某个时间点. 分析: 1.首先确认进程存在并没有dead. 2.然后用strace –p看了一下进程,发现进程卡在futex调用上面,应该是在锁操作上面出问题了. 3.用gdb attach进程ID,用py-bt查看一下堆栈,发现堆栈的信息大致为:sig_handler(某个信号处理函数)->auroralogger(自定义的日志函数)->logging(python的logging

  • Python logging简介详解

    目录 一.日志级别 1. 级别定义 2. 简单示例 3. 指定级别 二.基本概念 1. Logger 2. Handler 3. Formatter 三.示例 1. 日志输出至控制台 2. 日志输出至文件 四.默认Logger 总结 一.日志级别 1. 级别定义 ​ logging模块提供了5种日志级别,分别为:CRITICAL>ERROR>WARNING>INFO>DEBUG.这些级别具有不同的优先级,其中CRITICAL的优先级最高,而DEBUG的优先级最低.具体来说 debu

  • 基于python爬虫数据处理(详解)

    一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数 1.1.设置变量 set @变量名=值 set @address='中国-山东省-聊城市-莘县'; select @address 1.2 .length()函数 char_length()函数区别 select length('a') ,char_length('a') ,length('中') ,char_length('中') 1.3. replace() 函数

  • Python 操作MySQL详解及实例

    Python 操作MySQL详解及实例 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3. PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3. SQLA

  • 使用C++扩展Python的功能详解

    本文主要研究的是使用C++扩展Python的功能的相关问题,具体如下. 环境 VS2005Python2.5.4Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python来调用有点不一样(虽然本质是一样的).而是指使用Python本身提供的API,使用C++来对Python进行功能性扩展,可以这样理解,使用更高效的语言实现一些算法计算等等需要更高执行效率的核心(或者需要与系统进行密切交互的)模块,然后让Python像调用内建标准库

  • scrapy处理python爬虫调度详解

    学习了简单的知识点,就会想要向有难度的问题挑战,这里必须要夸一夸小伙伴们.不过我们今天不需要做什么程序的测试,只用简单的两个代码对比,小伙伴们就能在其中体会两者的不同和难易程度.scrapy能否适合处理python爬虫调度的问题,小编直接说出答案小伙伴们也不能马上信服,下面就让我们在示例中找寻答案吧. 总的来说,需要使用代码来爬一些数据的大概分为两类人: 非程序员,需要爬一些数据来做毕业设计.市场调研等等,他们可能连 Python 都不是很熟: 程序员,需要设计大规模.分布式.高稳定性的爬虫系统

  • Python循环结构详解

    一.内容简介 使用while循环编写重复执行的语句 使用哨兵值控制循环 使用for循环实现计数器控制 使用break.continue控制循环 二.while循环 注意:循环控制时不要使用浮点型来比较等值 i = 1 # 循环变量的初值 while i < 10: # 循环变量的判断 print("当前第", i, "次循环") i += 1 # 循环变量的更新 PyCharm调试示例 # PyCharm中的调试 # 1. 设置断点:debug->调试

  • 6个实用的Python自动化脚本详解

    目录 1.将 PDF 转换为音频文件 2.从列表中播放随机音乐 3.不再有书签了 4.智能天气信息 5.长网址变短网址 6.清理下载文件夹 每天你都可能会执行许多重复的任务,例如阅读 pdf.播放音乐.查看天气.打开书签.清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便.而在某种程度上,Python 就是自动化的代名词.今天分享 6 个非常有用的 Python 自动化脚本. 1.将 PDF 转换为音频文件 脚本可以将 pdf 转换为音频文件,原理也很简单,首先用 Py

  • Python的进程间通信详解

    目录 进程概述 队列简介 多进程队列的使用 使用队列在进程间通信 总结 进程概述 ​ 进程(Process)是计算机中已运行程序的实体.进程与程序不同,程序本身只是指令.数据及器组织形式的描述,进程才是程序(那些指令和数据)的真正运行实体.例如在没有打开QQ时,QQ只是程序.打开以后,操作系统为QQ开启一个进程.再打开一个QQ,则又开启一个进程. ​ 那么在多进程中,每个进程之间是什么关系呢?其实每个进程都有自己的地址空间.内存.数据栈以及其他记录其运行状态的辅助数据.下通过一个例子验证一下进程

  • Python办公自动化SFTP详解

    目录 前言 一.sftp和ftp的区别是什么? 二.使用步骤 1.程序结构 2.配置文件 3.读入配置文件 4.sftp_client.py 5.email_client.py 6.main.py 总结 前言 提示:这里可以添加本文要记录的大概内容: 公司里B2B是通过WinSCP里SFTP与客户进行数据传输,WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端,本想偷个懒拿同事的WinSCP的SFTP代码给总部传数据,同事给的代码调用WinSCP就是执行不成功,不知道Wi

  • Python网络编程详解

    1.服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的"服务".它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求. 2.客户端/服务器架构既可以应用于计算机硬件,也可以应用于计算机软件. 3.在服务器响应客户端之前,首先会创建一个通信节点,它能够使服务器监听请求. 一.套接字:通信端点 1.套接字 套接字是计算机网络数据结构,它体现了上节中所描述的"通信端点"的概念.在任何类型的通信开始之前,网络应用程序必须创建套接字

随机推荐