当前位置: 首页 > news >正文

python日志模块,loggin模块

python日志模块,loggin模块

  • loggin模块
    • 日志的格式
    • 处理器种类
    • 日志格式的参数
    • 使用

loggin模块

logging库采用模块化方法,并提供了几类组件:记录器,处理程序,过滤器和格式化程序。

  • 记录器(Logger):提供应用程序代码直接使用的接口。
    ​ 相当于笔,记录日志信息。记录器可以有多个处理器

  • 处理器(Handler):将日志记录(由记录器创建)发送到适当的目的地。

    ​ 将记录器记录的日志信息发送到其他位置,处理器可以有多个,每个处理器指定一个位置

  • 筛选器(Filter):提供了更细粒度的功能,用于确定要输出的日志记录。

    ​ 筛选记录器进行筛选,通过筛选的输出其记录的日志

  • 格式器(Formatter):程序在最终输出日志记录的内容格式。

    ​ 定义日志的格式,内容格式,保存方式,切割方式

都可以根据情况定义多个

日志的格式

日志的级别日志的数字级别说明
debug10详细信息常用于调试
info20程序正常运行产生的日志
warning30警告性日志,程序仍正在运行,可能出现问题
error40错误日志,程序已经不能执行一些功能了
critical50严重错误,程序已不能运行

记录器默认日志级别为warning,处理器不做日志等级设置,会继承记录器的日志等级设置。
处理器做日志级别设置后,处理器按照处理器自身的日志级别执行。但是处理器设置的日志级别低于记录器默认日志级别时,不会生效。如果想要处理器日志级别低于记录器的默认日志级别warning,需要设置降低记录器的日志级别

处理器种类

处理器说明
logging.StreamHandler()把日志标准输出到屏幕
logging.FileHandler()把日志写入一个文件
如不能直接使用,需再次导入
import logging.handlers导入全部处理器
或from logging.handlers import RotatingFileHandler导入需要的某个处理器
logging.handlers.RotatingFileHandler()日志回滚方式,按日志大小切割备份日志
logging.handlers.TimedRotatingFileHandler()日志回滚方式,按日志使时间切割备份日志
logging.handlers.BaseRotatingHandler()基本的日志回滚方式
logging.handlers.SocketHandler()远程输出日志到TCP/IP sockets
logging.handlers.SMTPHandler()远程输出日志到邮件地址
logging.handlers.SysLogHandler()日志输出到syslog
logging.handlers.DatagramHandler()远程输出日志到UDP sockets
logging.handlers.NTEventLogHandler()远程输出日志到Windows NT/2000/XP的事件日志
logging.handlers.BufferingHandler()
logging.handlers.HTTPHandler()通过"GET"或者"POST"远程输出到HTTP服务器
logging.handlers.MemoryHandler()日志输出到内存中的指定buffer
logging.handlers.WatchedFileHandler()
logging.handlers.QueueHandler()

https://blog.csdn.net/llf_cloud/article/details/88642830

logging — Python 的日志记录工具 — Python 3.11.2 文档

日志格式的参数

format参数中可能用到的格式化信息:

参数说明
%(asctime)s字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(name)s记录器的名字
%(levelname)s名字形式的日志级别
%(levelno)s数字形式的日志级别
%(filename)s调用日志输出函数的模块的python文件名
%(pathname)s调用日志输出函数的模块的完整路径名,即python文件的完整路径
%(module)s调用日志输出函数的模块名,可能同%(filename)s
%(funcName)s调用日志输出函数的函数名
%(lineno)d调用日志输出函数的语句所在的代码行,即句日志所在代码的行数
%(created)f当前时间,用UNIX标准的表示时间的浮点数表示,即时间戳
%(relativeCreated)d输出日志信息时的,自Logger创建以 来的毫秒数
%(thread)d线程ID。可能没有
%(threadName)s线程名。可能没有
%(process)d进程ID。可能没有
%(message)s日志的具体信息

示例:

logger = logging.getLogger("mylog")
....
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(levelno)s - %(filename)s - %(pathname)s - %(module)s- %(funcName)s - %(lineno)d - %(created)f - %(relativeCreated)d - %(thread)d - %(threadName)s - %(process)d - %(message)s')
D:\gitee\python\venv\Scripts\python.exe D:\gitee\python\python相关\巡检脚本更新1\master2.py 2023-03-05 11:17:47,335 - mylog - INFO - 20 - pythonSsh.py - D:\gitee\python\python相关\巡检脚本更新1\pythonSsh.py - pythonSsh- myserver - 45 - 1677986267.335183 - 217 - 12912 - MainThread - 18536 - 开始建立与服务器的连接

使用

import logging
import logging.handlers# from logging.handlers import RotatingFileHandler# 记录器 处理器 过滤器 日志格式 均可根据需要设置多个# 创建记录器,记录器名字为app
logger = logging.getLogger("app")# 设置记录器记录日志的等级为INFO,即只把INFO及INFO以上的日志信息记录下来
logger.setLevel(logging.INFO)# 创建处理器,处理器可以有多个# 创建把日志屏幕输出的处理器
console_handler = logging.StreamHandler()# 创建把日志写入文件的处理器,文件未做特殊设置,会一直把日志写入此文件,不做切分
# 日志名字,日志写入方式,追加写  日志字符集,UTF-8 日志缓存 False 无缓存
file_handler = logging.FileHandler(filename="app.log", mode='a', encoding='UTF-8', delay=False)# 设置日志格式
# s前的数字8表示占8位字符,为了对齐
# 8前的-表示左对齐,默认为右对齐
# 时间 日志名 日志等级 日志信息
formatter1 = logging.Formatter('%(asctime)s - %(thread)d - %(levelname)s - %(message)s')
formatter2 = logging.Formatter('%(asctime)s - %(levelname)-8s - %(message)s')'''
formatter2 示例
2023-03-05 12:18:33,252 - INFO     - this is test info
2023-03-05 12:18:33,252 - WARNING  - this is test warning
2023-03-05 12:18:33,252 - ERROR    - this is test error
2023-03-05 12:18:33,252 - CRITICAL - this is test critical'''# 把日志格式添加到处理器
console_handler.setFormatter(formatter2)
file_handler.setFormatter(formatter1)# 把创建的处理器添加到处理器
logger.addHandler(console_handler)
logger.addHandler(file_handler)# 创建过滤器(过滤器非必要条件,也可以不创建)# 把记录器app 添加到过滤器
fil = logging.Filter("app")# 给记录器关联过滤器
logger.addFilter(fil)# 也可以给处理器关联过滤器
console_handler.addFilter(fil)# 打印日志的代码
logger.debug('this is test debug')
logger.info("this is test info")
logger.warning("this is test warning")
logger.error("this is test error")
logger.critical("this is test critical")# 异常日志记录
n = 'abc'
try:int(n)logger.info("test try ok")
except Exception as e:logger.exception("this test exception %s",e)#参考:
# https://blog.csdn.net/weixin_47154909/article/details/106203639

日志内容

2023-03-05 14:42:17,869 - 20472 - INFO - this is test info
2023-03-05 14:42:17,869 - 20472 - WARNING - this is test warning
2023-03-05 14:42:17,870 - 20472 - ERROR - this is test error
2023-03-05 14:42:17,870 - 20472 - CRITICAL - this is test critical
2023-03-05 14:42:17,870 - 20472 - ERROR - this test exception invalid literal for int() with base 10: 'abc'
Traceback (most recent call last):File "D:\gitee\python\python相关\日志模块logging.py", line 106, in <module>int(n)
ValueError: invalid literal for int() with base 10: 'abc'

相关文章:

python日志模块,loggin模块

python日志模块&#xff0c;loggin模块loggin模块日志的格式处理器种类日志格式的参数使用loggin模块 logging库采用模块化方法&#xff0c;并提供了几类组件&#xff1a;记录器&#xff0c;处理程序&#xff0c;过滤器和格式化程序。 记录器&#xff08;Logger&#xff09;&a…...

接口自动化入门-TestNg

目录1.TestNg介绍2、TestNG安装3、TestNG使用3.1 编写测试用例脚本3.2 创建TestNG.xml文件&#xff08;1&#xff09;创建testng.xml文件&#xff08;2&#xff09;修改testng.xml4、测试报告生成1.TestNg介绍 TestNg是Java中开源的自动化测试框架&#xff0c;灵感来源于Junit…...

Spring AOP —— 详解、实现原理、简单demo

目录 一、Spring AOP 是什么&#xff1f; 二、学习AOP 有什么作用&#xff1f; 三、AOP 的组成 3.1、切面&#xff08;Aspect&#xff09; 3.2、切点&#xff08;Pointcut&#xff09; 3.3、通知&#xff08;Advice&#xff09; 3.4、连接点 四、实现 Spring AOP 一个简…...

(蓝桥真题)异或数列(博弈)

题目链接&#xff1a;P8743 [蓝桥杯 2021 省 A] 异或数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例输入&#xff1a; 4 1 1 1 0 2 2 1 7 992438 1006399 781139 985280 4729 872779 563580 样例输出&#xff1a; 1 0 1 1 分析&#xff1a;容易想到对于异或最大值…...

4万字数字政府建设总体规划方案WORD

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用。部分资料内容&#xff1a; 我省“数字政府”架构 &#xff08;一&#xff09; 总体架构。 “数字政府”总体架构包括管理架构、业务架构、技术架构。其中&#xff0c;管理架构体现“管运分离”的建设运营模式…...

CCF/CSP 201709-2公共钥匙盒100分

试题编号&#xff1a;201709-2试题名称&#xff1a;公共钥匙盒时间限制&#xff1a;1.0s内存限制&#xff1a;256.0MB问题描述&#xff1a;问题描述  有一个学校的老师共用N个教室&#xff0c;按照规定&#xff0c;所有的钥匙都必须放在公共钥匙盒里&#xff0c;老师不能带钥…...

【OC】Blocks模式

1. Block语法 Block语法完整形式如下&#xff1a; ^void (int event) {printf("buttonId:%d event%d\n", i, event); }完整形式的Block语法与一般的C语言函数定义相比&#xff0c;仅有两点不同。 没有函数名。带有“^”&#xff08;插入记号&#xff09;。 因为O…...

软件设计师教程(七)计算机系统知识-操作系统知识

软件设计师教程 软件设计师教程&#xff08;一&#xff09;计算机系统知识-计算机系统基础知识 软件设计师教程&#xff08;二&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;三&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;…...

蓝桥杯2023/3/2

1. 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组 成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xff0c;他准备不再完全记忆这些单词&#xff0c;而是根据单词中哪个字母出现得最…...

【IoT】创业成功不可或缺的两个因素:能力和趋势

今天就来谈谈能力和趋势究竟哪个更重要的问题。 在谈成功的十大要素时&#xff0c;我曾经讲到&#xff1a; 一命、二运、三风水&#xff0c;这三个要素几乎不涉及任何个人的努力。 而趋势跟这三个要素又是息息相关的&#xff0c;这也类似雷军所说的飞猪理论。 只要风足够大&…...

2020蓝桥杯真题日期格式 C语言/C++

问题描述 小蓝要处理非常多的数据, 其中有一些数据是日期。 在小蓝处理的日期中有两种常用的形式: 英文形式和数字形式。 英文形式采用每个月的英文的前三个宁母作为月份标识, 后面跟两位数字 表示日期, 月份标识第一个字母大写, 后两个字母小写, 日期小于 10 时要补 前导 0s…...

总时差与自由时差

定义总时差&#xff08;总浮动时间&#xff09;&#xff08;TF&#xff0c;Total Free Time&#xff0c;不耽误项目总进度&#xff09;LS&#xff08;Latest Start&#xff09;-ES&#xff08;Earliest Start&#xff09;LF&#xff08;Latest Finish&#xff09;-EF&#xff0…...

LeetCode两个数组的交集-跳跃游戏- 最长有效括号

两个数组的交集 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 示例 2&#xff1a; 输入&…...

mysql普通索引与唯一索引怎么选择

学习mysql普通索引与唯一索引选择记录总结&#xff0c;学习链接&#xff1a;http://gk.link/a/11YG8从mysql查询操作分析&#xff1a;普通索引&#xff1a;查到满足条件的第一条记录后&#xff0c;还会继续查找下一条记录&#xff0c;直到出现满足条件的记录出现后停止检索唯一…...

JavaWeb开发(三)3.5——Java的反射机制

一、反射机制的概念 指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能调用它的任意一个方法。这种动态获取信息&#xff0c;及动态调用对象方法的功能叫java语言的反射机制。 Java反射机制的核心是在程序运行时动…...

Python每日一练(20230305)

目录 1. 正则表达式匹配 ★★★ 2. 寻找旋转排序数组中的最小值 II ★★★ 3. 删除排序链表中的重复元素 II ★★ 1. 正则表达式匹配 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个…...

SpringBoot三种方法实现定时发送邮件的案例

前言 小编我将用CSDN记录软件开发之路上所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01;也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&#xff0c;让我们共…...

opengl、opengl es、webgl介绍与opengl开发入门

1、OpenGL OpenGL&#xff08;英语&#xff1a;Open Graphics Library&#xff0c;译名&#xff1a;开放图形库或者“开放式图形库”&#xff09;常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL的高效实现&#xff08;利用了图形加速硬件&#xff09;存在于Windo…...

Vue3之组件间传值

何为组件间传值 在Vue3之组件文章中&#xff0c;我们学会了定义使用组件&#xff0c;但是我们似乎还缺少什么将组件之间联系起来&#xff0c;说到组件之间的联系就不得不提组件间的传值&#xff0c;而组件间的传值其实也不难理解&#xff0c;就是如何在子组件中接收到父组件传…...

Windows10下使用CMake编译ITK5.2.1步骤

编译环境&#xff1a;Windows10VS2017Cmak3.24.0ITK5.2.1 编译步骤&#xff1a; 1、下载ITK到本地&#xff1a;ITK官网Download | ITK&#xff0c;ITK5.2.1下载地址 https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.2.1/InsightToolkit-5.2.1.zip ​…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...