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

python的日志模块学习记录

logging模块是Python的内置日志模块满足日常需要

使用方法

*** 1.导入***

import logging
from logging import config

*** 2.配置日志配置项(基本配置一般不能满足需要,一般使用字典配置如下)***

# 日志基本配置方法,一般不能满足需要
logging.basicConfig(# 日志级别   默认30对应warning等级 每次10个单位    40--error    50--critical  20--info    10--debug   以此类推level=30,# 日志输出格式   asctime  时间     name 名字# pathname  哪个文件产生的日志文件名   lineno 这个文件的哪一行代码产生的日志   levelname  日志等级# message  日志信息format='%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s',# 上面asctime的时间格式datefmt='%Y%m%d %H:%M:%S',# 日志文件地址  不指定默认只是打印到终端,   指定的话就不会打印在控制台了只会打印在日志文件中,这两个是二选一filename='test_log_path.log'
)

此基础配置的日志打印格式示例

20231101 23:31:36 root [C:/Users/xxxxx/Desktop/xxxxx_python_test_dir/xxxxx_test_4.py line:119] WARNING 警示等级日志信息
20231101 23:31:36 root [C:/Users/xxxxx/Desktop/xxxxx_python_test_dir/xxxxx_test_4.py line:120] ERROR 错误等级日志信息
20231101 23:31:36 root [C:/Users/xxxxx/Desktop/xxxxx_python_test_dir/xxxxx_test_4.py line:121] CRITICAL 严重等级日志信息
# 详细配置可以用设置配置字典这种方式 定义好然后在后面调用即可,配置方法如下
# 除了这种字典格式的配置方法外还可以搞一个配置文件来配置,详细配置的话这两种方法都可以
LOGGING_DIC = {# 版本一般不用管'version': 1.0,'disable_existing_loggers': False,# 日志格式(可以定义多种日志格式,再具体调用)'formatters': {"standard": {"format": '%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s',"datefmt": '%Y%m%d %H:%M:%S',},"test": {"format": '%(asctime)s  %(message)s'}},# 过滤器一般默认就好'filters': 1.0,# 日志处理器  输出到控制台还是日志文件,输出到哪个文件都在这个里面指定  也可定义多个'handlers': {# 日志输出到终端"输出到控制台的日志配置名字随便起": {# 日志级别,DEBUG"level": "DEBUG",# 输出到终端"class": "logging.StreamHandler",# 日志格式"formatter": "simple",},# 日志轮转的意思是当日志文件过大时就重新给另一个日志文件保存新日志或者重命名之前的在给新日志文件保存日志"可以自动处理日志轮转的配置名字随便起": {# 日志级别,DEBUG"level": "DEBUG",# 保存到文件并且有轮转机制"class": "logging.handlers.ROtatingFileHandler",#"filename": "填写日志文件地址",# 日志大小阈值"maxBytes": 800,# 日志文件保存数量限制"backupCount": 3,# 保存到日志文件的编码格式"encoding": "utf-8",# 日志格式"formatter": "simple",},# 日志保存到文件的配置"保存到文件的日志配置名字随便起": {# 日志级别,DEBUG"level": "DEBUG",# 保存到文件"class": "logging.FileHandler",# 填写日志文件地址"filename": "填写日志文件地址",# 写到日志文件中时的编码格式(就是用utf-8编码格式编码成二进制保存到文件中)"encoding": "utf-8",# 日志格式"formatter": "test",},},# 日志记录器'loggers': {"日志名字1": {# 导入日志时所遵循的handler字典(上面有定义)"handlers": ['输出到控制台的日志配置名字随便起'],# 日志等级和上面的日志等级形成两层过滤"level": 'DEBUG',# 默认为True, 向上传递"propagate": False,},"日志名字2": {# 导入日志时所遵循的handler字典(上面有定义)"handlers": ['输出到控制台的日志配置名字随便起', '保存到文件的日志配置名字随便起'],# 日志等级和上面的日志等级形成两层过滤"level": 'INFO',# 默认为True, 向上传递"propagate": False,},},
}

*** 3.调用配置,是日志配置生效***

# 设置日志配置(详细)
from logging import config# 以字典方法配置日志配置项时调用这个接口传递字典
logging.config.dictConfig(LOGGING_DIC)# 以配置文件的方法配置日志配置项时调用这个接口传递配置文件的地址  (此处可能涉及到读取 日志配置文件的时候会有乱码问题,一般需要改源码才行,所以推荐字典配置)# 已配置文件方式配置的话调用这个
logging.config.fileConfig('日志配置文件的地址')log1 = logging.getLogger("对应到配置字典中的日志记录器中的日志名字键 如上面的    日志名字1/日志名字2")

*** 4.打印日志***

# 日志打印
logging.debug("调试等级日志信息")
logging.info("普通等级日志信息")
logging.warning("警示等级日志信息")
logging.error("错误等级日志信息")
logging.critical("严重等级日志信息")

相关文章:

python的日志模块学习记录

logging模块是Python的内置日志模块满足日常需要 使用方法 *** 1.导入*** import logging from logging import config*** 2.配置日志配置项(基本配置一般不能满足需要,一般使用字典配置如下)*** # 日志基本配置方法,一般不能满足需要 logging.basic…...

【java】redisTemplate mock时报空指针

原方法&#xff1a; Boolean locked redisTemplate.opsForValue().setIfAbsent(redisKey, "", 400, TimeUnit.SECONDS);mock方法 mock方法&#xff1a; 需要每个函数都mock。 Mock RedisTemplate redisTemplate;... ValueOperations<String, String> value…...

Hadoop PseudoDistributed Mode 伪分布式

Hadoop PseudoDistributed Mode 伪分布式加粗样式 hadoop101hadoop102hadoop103192.168.171.101192.168.171.102192.168.171.103namenodesecondary namenoderecource managerdatanodedatanodedatanodenodemanagernodemanagernodemanagerjob historyjob logjob logjob log 1. …...

个人职业规划

职业规划 软件体系结构 内容 组件 关系 视图 技术 抽象 封装 信息隐藏 模块化 事务分离 耦合和内聚 充分性、完整性和原始性 策略和实现的分离 接口和实现的分离 单一引用点 分而治之 结构 层 管道和过滤器 黑板 系统 分布式系统 代理者 交互式系统 …...

Linux | 如何保持 SSH 会话处于活动状态

在远程服务器管理和安全数据传输中&#xff0c;SSH&#xff08;Secure Shell&#xff09;是不可或缺的工具。然而&#xff0c;它的便利性和安全性有时会因常见的问题而受到损害&#xff1a;冻结 SSH 会话。 此外&#xff0c;session 的突然中断可能会导致工作丢失、项目延迟和无…...

树结构及其算法-二叉树节点的插入

目录 树结构及其算法-二叉树节点的插入 C代码 树结构及其算法-二叉树节点的插入 二叉树节点插入的情况和查找相似&#xff0c;重点是插入后仍要保持二叉查找树的特性。如果插入的节点已经在二叉树中&#xff0c;就没有插入的必要了&#xff0c;如果插入的值不在二叉树中&…...

JVM 分代垃圾回收过程

堆空间划分了代&#xff1a; 年轻代&#xff08;Young Generation&#xff09;分为 eden 和 Survivor 两个区&#xff0c;Survivor 又分为2个均等的区&#xff0c;S0 和 S1。 首先&#xff0c;新对象都分配到年轻代的 eden 空间&#xff0c;Survivor 刚开始是空的。 当 eden …...

【C++】 常对象与常函数

常函数&#xff1a; 成员函数后加const后我们称为这个函数为常函数常函数内不可以修改成员属性成员属性声明时加关键字mutable后&#xff0c;在常函数中依然可以修改 常对象&#xff1a; 声明对象前加const称该对象为常对象常对象只能调用常函数 一、this指针本质 this指针…...

Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…...

Java调用HTTPS接口,绕过SSL认证

1&#xff1a;说明 网络编程中&#xff0c;HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种通过加密的方式在计算机网络上进行安全通信的协议。网络传输协议&#xff0c;跟http相比更安全&#xff0c;因为他加上了SSL/TLS协议来加密通信内容。 Java调…...

前端小技巧: TS实现数组转树,树转数组

将数组转为树 interface IArrayItem {id: number,name: string,parentId: number }interface ITreeNode {id: numbername: stringchildren?: ITreeNode[] }const arr [{id: 1, name: 部门A, parentId: 0},{id: 2, name: 部门B, parentId: 1},{id: 3, name: 部门C, parentId:…...

谷歌动态搜索广告被滥用引发恶意软件泛滥

研究人员发现了一种新方法&#xff0c;可以利用易受攻击的网站向搜索引擎用户发送恶意的、有针对性的广告&#xff0c;这种方法能够传播大量恶意软件&#xff0c;使受害者完全不知所措。 关键是“动态搜索广告”&#xff0c;谷歌利用网站登陆页面的内容将目标广告与搜索配对的…...

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 完整代码&#xff1a; /*编写以下函数 1&#xff0e;在一个二维数组中形成如以下形式的 n 阶矩阵&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 2&#xff0e;去掉…...

我在Vscode学OpenCV 处理图像

既然我们是面向Python的OpenCV&#xff08;OpenCV for Python&#xff09;那我们就必须要熟悉Numpy这个库&#xff0c;尤其是其中的数组的库&#xff0c;Python是没有数组的&#xff0c;唯有借助他库才有所实现想要的目的。 # 老三样库--事先导入 import numpy as np import c…...

【python】路径管理+路径拼接问题

路径管理 问题相对路径问题绝对路径问题 解决os库pathlib库最终解决 问题 环境&#xff1a;python3.7.16 win10 相对路径问题 因为python的执行特殊性&#xff0c;使用相对路径时&#xff0c;在不同路径下用python指令会有不同的索引效果&#xff08;python的项目根目录根据执…...

C现代方法(第16章)笔记——结构、联合和枚举

文章目录 第16章 结构、联合和枚举16.1 结构变量16.1.1 结构变量的声明16.1.2 结构变量的初始化16.1.3 指示器(C99)16.1.4 对结构的操作 16.2 结构类型16.2.1 结构标记的声明16.2.2 结构类型的定义16.2.3 结构作为参数和返回值16.2.4 复合字面量(C99)16.2.5 匿名结构(C1X) 16.3…...

Python项目——识别指定物品

目录 1、百度EasyDL平台数据配置 1.1、训练图像上传 1.2、训练图像进行标注 1.3、训练模型 1.4、检验识别 1.5、申请发布 1.6、控制台权限配置 2、Python调用物体识别API 本项目是基于百度EasyDL平台制作的识别转盘内瓶子&#xff0c;且识别瓶子位置的一个项目。通过在…...

Spring-创建非懒加载的单例Bean源码

补充&#xff1a;关于扫描的逻辑 /*** Scan the class path for candidate components.* param basePackage the package to check for annotated classes* return a corresponding Set of autodetected bean definitions*/ public Set<BeanDefinition> findCandidateCo…...

Techlink TL24G06 网络变压器 10G 基座单端口变压器

功能特征&#xff1a; 1、符合IEEE 802.3标准。 2、符合RoHS。 3、工作温度范围&#xff1a;0C至70C。 4、储存温度范围&#xff1a;-20C至125C。...

Python操作PDF:PDF文件合并与PDF页面重排

处理大量的 PDF 文档是非常麻烦的事情&#xff0c;频繁地打开关闭文件会严重影响工作效率。对于一大堆内容相关的 PDF 文件&#xff0c;我们在处理时可以将这些 PDF 文件合并起来&#xff0c;作为单一文件处理&#xff0c;从而提高处理效率。同时&#xff0c;我们也可以选取不同…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...