训练日志——logging
目录
- 基础使用
- 日志的6个级别
- 打印日志
- 修改打印级别
- 高级应用
- logging的组成
- 记录器Loggers
- 处理器Handlers
- 过滤器Filter
- formatter格式
- 创建关联
- 打印日志
- 配置文件
- 参考
基础使用
日志的6个级别

打印日志
import logginglogging.debug('调试日志')
logging.info('消息日志')
logging.warning('警告日志')
logging.error('错误日志 ')
logging.critical('严重错误日志')

注意:默认情况下,logging的输出级别是warning级别
修改打印级别
import logginglogging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s]', datefmt='%Y-%m-%d %H:%M:%S', filename='demo.log',filemode='w')
level是指定日志的打印级别
format是日志输出格式
%(name)s Logger的名字(get1ogger时指定的名字)
%(levelno)d 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出位置的完整路径名
%(filename)s 调用日志输出的文件名
%(module)s 调用日志输出日志的模块名
%(funcName)s 调用日志输出日志的函数名
%(1ineno)d 调用日志输出两数的语句所在的代码行
%(created)f 当前时间,用UNIx标准的表示时间的浮 点数表示
%(relativecreated)d 输出日志信息时的,自Loqger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间,默认格式是“2023-10-05 12:13:33,231”
%(thread)d 线程ID,可能没有
%(threadName)s 线程名,可能没有
%(process)d 进程ID,可能没有
%(message)s 用户输出的消息
datefmt是修改 asctime 的时间格式
filename是若不指定此配置,默认打印在控制台; 指定后,打印到指定路径文件
filemode是文件写入方式:1.‘w’:覆盖文件中现有数据 2.‘a’ : 追加到文件末尾
高级应用
logging的组成

记录器Loggers
# 实例化一个记录器,并将记录器的名字设为 'training_log'
logger = logging.getLogger(name='training_log')# 设置 logger 的日志级别为 info
logger.setLevel(logging.INFO)
如果 logging.getLogger 不设置参数name 的话,默认记录器的名字为 ‘root’
处理器Handlers
# 1、创建一个handler,该handler往console打印输出
console_handler = logging.StreamHandler()
# 2、设置 console_handler 的日志级别为 debug
console_handler.setLevel(logging.DEBUG) # 3、再创建一个handler,该handler往文件中打印输出
# 未给file_handler指定日志级别,它会默认使用logger 的日志级别
file_handler = logging.FileHandler(filename='demo.log ')
过滤器Filter
flt = logging.Filter('training.loss')
formatter格式
# 创建一个标准版日志打印格式
standard_formatter = logging.setFormatter('%(asctime)s %(name)s [%(pathname)s line:(lineno)d] %(levelname)s %(message)s]')# 创建一个简单版日志打印格式
simple_formatter = logging.setFormatter('%(levelname)s %(message)s]')
创建关联
# 让 console_handler 使用 标准版日志打印格式
console_handler.setFormatter(standard_formatter)
# 让 file_handler 使用 标准版日志打印格式
file_handler.setFormatter(simple_formatter)# 给记录器绑定上 console_handler 和 file_handler
logger.addHandler(console_handler)
logger.addHandler(file_handler)#过滤器
logger.addFilter(flt)
打印日志
logger.debug('调试日志')
logger.info('消息日志')
logger.warning('警告日志')
logger.error('错误日志 ')
logger.critical('严重错误日志')
配置文件

配置文件log.conf
[loggers]
keys=root, logger01[handlers]
keys=console_handler,file_handler[formatters]
keys=standard_formatter,simple_formatter[logger_root]
level=DEBUG
handlers=file_handler[logger_logger01]
level=INFO
handlers=console_handler
qualname=mylogger
propagate=0[handler_console_handler]
class=StreamHandler
args=(sys.stdout,)
formatter=standard_formatter[handler_file_handler]
level=DEBUG
class=FileHandler
args=("demo.log", 'w')
formatter=simple_formatter[formatter_standard_formatter]
format=%(asctime)s %(name)s [%(pathname)s line:(lineno)d] %(levelname)s %(message)s[formatter_simple_formatter]
format=%(levelname)s %(message)s
demo.py
import logging.configlogging.config.fileConfig('demo.conf')root_logger = logging.getLogger()
my_logger = logging.getLogger('mylogger')root_logger.debug('调试日志')
root_logger.info('消息日志')
root_logger.warning('警告日志')
root_logger.error('错误日志 ')
root_logger.critical('严重错误日志')my_logger.debug('调试日志')
my_logger.info('消息日志')
my_logger.warning('警告日志')
my_logger.error('错误日志 ')
my_logger.critical('严重错误日志')
参考
参考了b站的Enzo大佬做的笔记,有关例子可见其网站
相关文章:
训练日志——logging
目录 基础使用日志的6个级别打印日志修改打印级别 高级应用logging的组成记录器Loggers处理器Handlers过滤器Filterformatter格式创建关联打印日志 配置文件参考 基础使用 日志的6个级别 打印日志 import logginglogging.debug(调试日志) logging.info(消息日志) logging.war…...
尺度为什么是sigma?
我们先看中值滤波和均值滤波。 以前,我认为是一样的,没有区分过。 他们说,均值滤波有使图像模糊的效果。 中值滤波有使图像去椒盐的效果。为什么不同呢?试了一下,果然不同,然后追踪了一下定义。 12345&…...
迭代器模式
自定义 Counter 结构体类型,并实现迭代器。其他语言的场景,读取数据库行数据时,使用的就是迭代器。我们使用for语言遍历数组,也是一种迭代。 结构体对象实现 Iterator trait,创建自定义的迭代器,只需要实现…...
C++ 修饰符、存储类、运算符、循环、判断
一、C修饰符类型: C允许在char、int、double数据类型前放置修饰符。 数据类型修饰符: ◆ signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。 ◆ unsigned࿱…...
2023 hnust 湖南科技大学 信息安全管理课程 期中考试 复习资料
前言 ※老师没画重点的补充内容★往年试卷中多次出现或老师提过的,很可能考该笔记是奔着及格线去的,不是奔着90由于没有听过课,部分知识点不一定全,答案不一定完全正确 题型 试卷有很多题是原题 判断题(PPTÿ…...
N皇后问题解的个数
暴力递归 #include <stdio.h>int count0,a[15],flag; void queen(int,int); int main(){int n;scanf("%d",&n);queen(n,n);printf("%d",count); } void queen(int n,int n0){if(n<1){flag1;for(int i1;i<n0;i){for(int j1;j<n0;j){if(…...
php订单发起退款(余额和微信支付)
index.html <a class="btn btn-danger btn-change btn-tuikuan btn-disabled" href="javascript:;"><i class="fa fa-tuikuan"></i> 订单退款</a>-->order.js // 为表格绑定事件Table.api.bindevent(table);//退款…...
【SpringCloud】认识微服务、服务拆分以及远程调用
SpringCloud 1.认识微服务 1.1单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 单体架构的优缺点: 优点: 架构简单,部署成本低 缺点: 耦合度高(维护困难&#x…...
Mysql基础操作(命令行)
文章目录 Mysql基础操作(命令行)背景创建数据库选择数据库查看所有表查看表结构向表插入数据插入第一条插入第二条插入第三条 查询表数据修改表数据删除表数据 Mysql基础操作(命令行) 背景 docker安装mysql8,映射本地…...
网站遇到DDOS攻击怎么办?
最近我的网站不幸又遇到了几乎是我见到过的最大一次 DDoS 攻击,并且几乎是没有反映的时间,直接接到腾讯云的短信通知“运营商封堵”,直接造成几个小时无法访问,解封后再次遭受到大流量 DDoS 攻击,再次被“腾讯云平台封…...
中间件渗透测试-Server2131(解析+环境)
B-10:中间件渗透测试 需要环境的加qq 任务环境说明: 服务器场景:Server2131(关闭链接) 服务器场景操作系统:Linux Flag值格式:Flag{Xxxx123},括…...
探究Kafka原理-2.Kafka基本命令实操
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请ὄ…...
Linux网卡没有eth0显示ens33原因以及解决办法
原因 首先说明一下eth0 与 ens33的关系: 目前的主流网卡为使用以太网络协定所开发出来的以太网卡(Ethernet),因此我们Linux就称呼这种网络接口为ethN(N为数字)。 举个栗子:就是说主机上面有一张以太网卡,因此主机的网络接口就是…...
1.前端--基本概念【2023.11.25】
1.网站与网页 网站是网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 2.Web的构成 主要包括结构(Structure) 、表现(Presentation)和行为(Behaviorÿ…...
计算机视觉面试题-01
计算机视觉面试通常涉及广泛的主题,包括图像处理、深度学习、目标检测、特征提取、图像分类等。以下是一些可能在计算机视觉面试中遇到的常见问题: 图像处理和计算机视觉基础 图像是如何表示的? 图像在计算机中可以通过不同的表示方法&…...
108. 将有序数组转换为二叉搜索树 --力扣 --JAVA
题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 解题思路 可以采用二分法,每次选数组中间值为…...
Springboot实现增删改差
一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…...
【程序员的自我修养01】编译流程概述
绪论 大家好,欢迎来到【程序员的自我修养】专栏。正如其专栏名,本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度,我会尽自己最大的努力,争取…...
在PyCharm中正确设置Python项目
大家好,在Mac和Linux都支持Python,但许多开发者发现正确设置Python项目很困难。本文汇总了多平台中运行Python的方法,提高编程的效率,如下所示: 使用命令行运行Python。 在PyCharm(免费社区版)…...
scoop bucket qq脚本分析(qq绿色安装包制作)
url字段 以qq.json为例,其对应的scoop配置文件在$env:scoop\buckets\extras\bucket\qq.json 其中的url字段 "url":"https://webcdn.m.qq.com/spcmgr/download/QQ9.7.17.29230.exe#/dl.7z"为qq安装包下载地址,后缀#/dl.7z为自行添加…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
