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时报空指针
原方法: Boolean locked redisTemplate.opsForValue().setIfAbsent(redisKey, "", 400, TimeUnit.SECONDS);mock方法 mock方法: 需要每个函数都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 会话处于活动状态
在远程服务器管理和安全数据传输中,SSH(Secure Shell)是不可或缺的工具。然而,它的便利性和安全性有时会因常见的问题而受到损害:冻结 SSH 会话。 此外,session 的突然中断可能会导致工作丢失、项目延迟和无…...

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

JVM 分代垃圾回收过程
堆空间划分了代: 年轻代(Young Generation)分为 eden 和 Survivor 两个区,Survivor 又分为2个均等的区,S0 和 S1。 首先,新对象都分配到年轻代的 eden 空间,Survivor 刚开始是空的。 当 eden …...

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

Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...

Java调用HTTPS接口,绕过SSL认证
1:说明 网络编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密的方式在计算机网络上进行安全通信的协议。网络传输协议,跟http相比更安全,因为他加上了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:…...

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

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。
矩阵形式: 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 完整代码: /*编写以下函数 1.在一个二维数组中形成如以下形式的 n 阶矩阵: 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.去掉…...

我在Vscode学OpenCV 处理图像
既然我们是面向Python的OpenCV(OpenCV for Python)那我们就必须要熟悉Numpy这个库,尤其是其中的数组的库,Python是没有数组的,唯有借助他库才有所实现想要的目的。 # 老三样库--事先导入 import numpy as np import c…...

【python】路径管理+路径拼接问题
路径管理 问题相对路径问题绝对路径问题 解决os库pathlib库最终解决 问题 环境:python3.7.16 win10 相对路径问题 因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(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平台制作的识别转盘内瓶子,且识别瓶子位置的一个项目。通过在…...

Spring-创建非懒加载的单例Bean源码
补充:关于扫描的逻辑 /*** 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 基座单端口变压器
功能特征: 1、符合IEEE 802.3标准。 2、符合RoHS。 3、工作温度范围:0C至70C。 4、储存温度范围:-20C至125C。...
Python操作PDF:PDF文件合并与PDF页面重排
处理大量的 PDF 文档是非常麻烦的事情,频繁地打开关闭文件会严重影响工作效率。对于一大堆内容相关的 PDF 文件,我们在处理时可以将这些 PDF 文件合并起来,作为单一文件处理,从而提高处理效率。同时,我们也可以选取不同…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...