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("严重等级日志信息")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt TreeView 设置节点不可编辑

目录 1. 创建treeview 2、节点不可编辑 3、设置logo 4、实例代码 1. 创建treeview //声明模型 QStandardItemModel *model;//创建4行,1列的模型 model new QStandardItemModel(4,1);//添加标题 model->setHeaderData(0, Qt::Horizontal, tr("Tree View…

overflow溢出属性、定位、前端基础之JavaScript

overflow溢出属性 值 描述 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被修剪&#xff0…

Flutter 02 基础组件 Container、Text、Image、Icon、ListView

一、Container容器组件: demo1: import package:flutter/material.dart;void main() {runApp(MaterialApp(home: Scaffold(appBar: AppBar(title: const Text("你好Flutter")),body: const MyApp(),),)); }// 容器组件 class MyApp extends St…

NLP学习笔记:使用 Python 进行NLTK

一、说明 本文和接下来的几篇文章将介绍 Python NLTK 库。NLTK — 自然语言工具包 — NLTK 是一个强大的开源库,用于 NLP 的研究和开发。它内置了 50 多个文本语料库和词汇资源。它支持文本标记化、词性标记、词干提取、词形还原、命名实体提取、分割、分类、语义推…

AI“走深向实”,蚂蚁蚁盾在云栖大会发布实体产业「知识交互建模引擎」

数字化起步晚、数据分散稀疏、专业壁垒高、行业知识依赖「老师傅」,是很多传统产业智能化发展面临的难题。2023年云栖大会上,蚂蚁集团安全科技品牌蚁盾发布“知识交互建模引擎”,将实体产业知识与AI模型有机结合,助力企业最快10分…

3.springboot创建代理

1.概述 本文介绍配置切面后,动态代理创建器自动创建动态代理的过程。有些名称先统一,可先看看前一篇: 原始bean: 需要被动态代理的对象,一般是我们用户编写的java类; 代理bean: spring为原始bean创建的代理对象&#…

手动仿射变换

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:通过仿射控件vtkAffineWidget对目标actor进行手动的拖拽的仿射变换 关键类:vtkAffineWi…

LSF 守护程序和进程、集群通信路径和安全模型

LSF 细观 了解在 LSF 主机上运行的各种守护进程,LSF 集群通信路径,以及 LSF 如何容许集群中的主机故障。 1、LSF 守护程序和进程 集群中的每个主机上都运行多个 LSF 进程。 正在运行的进程的类型和数量,取决于主机是主节点还是计算节点。 主…

WINCC7.5-根据时间跨度选择趋势

yyyy-MM-dd hh:mm:ss “yyyy”:表示四位数的年份,例如:2022。 “MM”:表示两位数的月份,从01到12。 “dd”:表示两位数的日期,从01到31。 “hh”:表示12小时制的小时数,从…

HackTheBox-Starting Point--Tier 1---Tactics

文章目录 一 题目二 实验过程三 Psexec工具使用 一 题目 Tags Network、Protocols、SMB、Reconnaissance、Misconfiguration译文:网络、协议、中小企业、侦察、配置错误Connect To attack the target machine, you must be on the same network.Connect to the S…

重要—01:Redis

目录 一、什么是Redis? 二、Redis如何实现高可用 三、缓存与数据库不一致问题 四、Redis持久化方式 五、6种淘汰策略 六、缓存穿透和缓存雪崩 七、Redis实现分布式锁 八、Redis.conf 配置文件详解 九、常用命令 一、什么是Redis? Redis&#xf…

TypeScript面试知识点?

以下是一些常见的TypeScript面试知识点,可能会在TypeScript相关的面试中被问到: 1:TypeScript的优势和用途: 解释TypeScript相对于JavaScript的优势,如静态类型检查、提供更好的开发工具支持、增加代码可读性和可维护性等。描述在什么情况下选择使用TypeScript,并举例说…

rcore 笔记 批处理系统 邓氏鱼

批处理系统 批处理系统 (Batch System) ,它可用来管理无需或仅需少量用户交互即可运行的程序,在资源允许的情况下它可以自动安排程序的执行,这被称为“批处理作业”。 特权机制 实现特权级机制的根本原因是应用程序运行的安全性不可充分信…

docker安装Kafka,SpringBoot整合Kafka

#拉取镜像 docker pull wurstmeister/zookeeper #运行容器 docker run --restartalways --name zookeeper -p 2181:2181 \ -v /etc/localtime:/etc/localtime -d wurstmeister/zookeeper#拉取镜像 docker pull wurstmeister/kafka#运行容器 docker run --restartalways --name …

Apache POI及easyExcel读取及写入excel文件

目录 1.excel 2.使用场景 3.Apache POI 4.easyExcel 5.总结 1.excel excel分为两版,03版和07版。 03版的后缀为xls,最大有65536行。 07版的后缀为xlsx,最大行数没有限制。 2.使用场景 将用户信息导出到excel表格中。 将excel中的数…

用pd.DataFrame.to_sql方法插入万行数据耗时21秒

to_sql是Pandas中用于将DataFrame数据写入数据库的方法,可以将DataFrame转换为SQL语句,方便我们将数据存入数据库中,以便进行后续的操作。 to_sql方法中包含多个参数,比较常用的参数有name(表名)、con&…

【算法挑战】用栈实现队列(含解析、源码)

232.用栈实现队列 https://leetcode-cn.com/problems/implement-queue-using-stacks/ 232.用栈实现队列 题目描述方法 1 思路复杂度代码 方法 2 思路复杂度代码(JavaScript/C) 题目描述 使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop(…

系统架构设计师-第15章-面向服务架构设计理论与实践-软考学习笔记

面向服务的体系结构(Service-Oriented Architecture, SOA) 面向服务的体系结构(Service-Oriented Architecture, SOA)是一种软件架构模式,它将应用程序的不同功能组织为一组可重用的、松耦合的、自治的服务,这些服务通…

在前端实现小铃铛上展示消息

点击铃铛显示如下消息框&#xff1a; 如果点击消息&#xff0c;可以实现消息从列表中移除,并从铃铛总数上进行扣减对应的已读消息数。 关于以上功能的实现方式&#xff1a; <!-- 铃铛位置 --><i class"el-icon-bell" click"showPopover true"&…

ubuntu启动报错error: proc_thermal_add, will cont

如题&#xff0c;ubuntu启动报错error: proc_thermal_add, will cont 截图如下&#xff1a; 困扰了我很久&#xff0c;差点就打算重装系统&#xff0c;准备放弃了&#xff0c;但是感谢国外的老哥&#xff0c;写了一篇非常详细的解决方案&#xff0c;我搬过来。 解决方案&#…