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

python 之 logging的使用

一、日志模块

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

debug(调试)级别用于输出调试信息,这些信息主要用于开发和调试过程,通常不会在生产环境中使用。
info(消息)级别用于输出正常的日志消息,用于提供应用程序的运行状态信息。
warning(告警)级别用于输出警告信息,表示可能会出现潜在的问题或异常情况,但不会影响应用程序的正常运行
error(错误)级别用于输出错误信息,表示出现了一些错误,但不会导致应用程序终止
critical(严重错误)级别用于输出严重错误信息,表示出现了致命错误,可能导致应用程序无法继续运行

二、basicConfig

import logginglogging.basicConfig(filename='app.log',   # 日志文件名 不指定文件,默认打印到终端控制台filemode='w',         # 文件模式format='%(asctime)s - %(name)s - %(pathname)s - %(lineno)d - %(levelname)s - %(message)s',
,  # 日志格式datefmt='%d-%b-%y %H:%M:%S',  # 时间格式 format中asctimelevel=logging.DEBUG  # 日志级别
)logging.debug("调试日志")
logging.info('消息日志')    # 正常日志
logging.warning("告警日志")
logging.error('错误日志')
logging.critical('严重错误日志')

日志格式:

日志字段示例值描述
asctime2023-05-19 15:30:45日志事件发生的时间
namemy_logger记录日志事件的 logger 的名称
pathname/path/to/my_file.py产生日志的文件路径
lineno42产生日志的文件行数
levelnameERROR日志等级
messageThis is an error message日志内容

文件模式:filemode

模式描述
‘r’只读模式,文件必须存在。
‘w’写入模式,若文件存在则清空内容,若文件不存在则创建新文件。
‘x’独占创建模式,仅能用于创建新文件,若文件已存在则引发错误。
‘a’追加模式,若文件存在则将内容追加到末尾,若文件不存在则创建新文件。

三、日志记录器

在Python的 logging 模块中,我们可以使用字典来进行配置,这比使用 basicConfig() 函数更加灵活。字典配置可以让你更详细地控制日志记录器、处理器、过滤器和格式化器;
可以定义多个日志记录器(logger),并且为每个记录器配置不同的处理器(handler),每个记录器可以独立地设置它的日志级别和处理器
formatters 日志格式化器
filters 日志过滤器
handlers 日志处理器
loggers 日志记录器

formatters 日志格式化器
filters 日志过滤器
loggers、handlers 均配置日志级别,会对其二次筛选

定义了两个日志记录器:console_logger 和 file_logger。console_logger 记录器只将日志消息发送到控制台,file_logger 记录器只将日志消息发送到文件。

import logging
import logging.configLOGGING_CONFIG = {'version': 1,  # 必填。这是配置字典的版本,必须为1'disable_existing_loggers': False,  # 可选。默认为True,表示禁用所有已存在的日志记录器。设置为False允许已存在的记录器继续运行。'formatters': {  # 日志格式化器:'standard': {  # 标准格式器 名字可随意改,可随意添加'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s','datefmt': '%d-%b-%y %H:%M:%S'},'detailed': {  # 更详细的格式器'format': '%(asctime)s [%(levelname)s] %(name)s %(pathname)s %(lineno)d: %(message)s','datefmt': '%d-%b-%y %H:%M:%S'},},'filters': {},  # 日志过滤器:默认即可'handlers': {  # 日志处理器: 此处定义了两种不同的处理器,可自定义'console': {  # 控制台处理器'class': 'logging.StreamHandler',  # 使用的处理器类'formatter': 'standard',  # 使用的格式器'level': 'DEBUG',  # 处理器的日志级别},'file': {  # 文件处理器'class': 'logging.FileHandler',  # 使用的处理器类'filename': 'app.log',  # 日志文件名'formatter': 'detailed',  # 使用的格式器'level': 'DEBUG',  # 处理器的日志级别},'file2': {  # 文件处理器'class': 'logging.FileHandler',  # 使用的处理器类'filename': 'app2.log',  # 日志文件名'formatter': 'detailed',  # 使用的格式器'level': 'DEBUG',  # 处理器的日志级别},'file3': {'class': 'logging.handlers.RotatingFileHandler',  # 使用RotatingFileHandler'filename': 'app3.log',  # 日志文件名'maxBytes': 1024*1024*30,  # 日志文件的最大字节数'backupCount': 14,  # 备份文件的数量'formatter': 'standard',  # 使用的格式器'level': 'DEBUG',  # 处理器的日志级别},},'loggers': {  # 日志记录器'console_logger': {  # 只将日志消息发送到控制台'handlers': ['console'],  # 使用的处理器'level': 'DEBUG',  # 记录器的日志级别'propagate': False, # 默认True (向更高级别logger传递)},'file_logger': {  # 只将日志消息发送到文件'handlers': ['console', 'file'],  # 使用的处理器及输入终端也卸乳文件'level': 'INFO',  # 记录器的日志级别},'': {  # 只将日志消息发送到文件'handlers': ['console', 'file2'],  # 使用的处理器及输入终端也卸乳文件'level': 'INFO',  # 记录器的日志级别},},
}logging.config.dictConfig(LOGGING_CONFIG)# 使用记录器记录日志
console_logger = logging.getLogger('console_logger')
console_logger.debug("调试日志")
console_logger.info('消息日志')    # 正常日志
console_logger.warning("告警日志")
console_logger.error('错误日志')
console_logger.critical('严重错误日志')file_logger = logging.getLogger('file_logger')
file_logger.debug("调试日志")
file_logger.info('消息日志')    # 正常日志
file_logger.warning("告警日志")
file_logger.error('错误日志')
file_logger.critical('严重错误日志')# 如果用户登录、用户订单 没有配置对应的logger,
找不到会默认找没有名字的'' logger
file_logger = logging.getLogger('login')
file_logger.info("用户登录")
file_logger = logging.getLogger('order')
file_logger.info("用户订单")

在这里插入图片描述

相关文章:

python 之 logging的使用

一、日志模块 import logginglogging.debug("调试日志") logging.info(消息日志) logging.warning("告警日志") logging.error(错误日志) logging.critical(严重错误日志)debug(调试)级别用于输出调试信息,这些信息主…...

gunicorn常用参数命令

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。具有实现简单,轻量级,高性能等特点。更多介绍内容参考官网,这里介绍几个常用参数。 安装 pip3 install gunicorn通过输入gunicorn -v查看版本。 最简洁的启动。首先进入到项目目录,例如django项目和mana…...

TimerResolution.exe

TimerResolution.exe是一款常用的Windows实用程序,用于调整系统计时器的分辨率。它提供了一种简便的方法,让用户能够更精确地控制计时器的运行方式,从而改善系统的性能和响应时间。无论是进行游戏、音频处理还是其他需要精确计时的任务,TimerResolution.exe都能提供极大的帮…...

Qt魔法书:打造自定义鼠标键盘脚本

Qt魔法书:打造自定义鼠标键盘脚本 一、引言(Introduction)1.1 脚本的重要性(Importance of Scripts)1.2 Qt在脚本制作中的优势(Advantages of Qt in Script Making)1.3 文章目标与结构概述&…...

〖Python网络爬虫实战㉖〗- Selenium库和ChromeDriver驱动的安装

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…...

U8产成品入库API接口 --参照生产订单/产品检验/不良品

//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext new U8EnvContext(); envContext.U8Login u8Login; //第三步:设置API地址标识(Url) …...

gdb打印的堆栈有些函数是??()是什么

当 gdb 打印的堆栈中出现 ??() 格式的函数名时,通常表示对应的函数名无法被解析,这可能是由以下几种原因导致的: 缺少符号表信息:如果程序的可执行文件没有包含符号表信息,或者 gdb 没有加载符号表信息,就…...

【Jmeter第三章】Jmeter给请求添加请求头

给请求加上请求头最常见的场景就是在请求头上添加token了,这里也拿添加token来举例 1、添加某个请求的请求头 1、选中HTTP请求,右键添加 2、添加请求头 2、添加公共的请求头信息 其实步骤和上面是一样的,只不过是选择:线程组…...

WebApi必须知道的RestFul,Swagger,OAuth2.0

什么是RestFul RestFul是一种软件架构风格,它是基于HTTP协议设计的。它是一种轻量级的、简单易懂、易于维护的架构风格,主要用于Web服务的设计。它的设计原则是面向资源,每个资源都有唯一的标识符,客户端通过HTTP协议对这些资源进…...

【网络编程】demo版UDP网络服务器实现

文章目录 一、引入二、服务端实现2.1 创建套接字socket2.2 绑定bind2.3 启动服务器2.4 IP的绑定2.5 读取数据recvfrom 三、用户端实现3.1 绑定问题3.2 发送数据sendto 四、源码 一、引入 在上一章【网络编程】socket套接字中我们讲述了TCP/UDP协议,这一篇就是简单实…...

C++的stack和queue

stack和queue 1.stackstack的模拟实现 2.queuequeue的模拟实现 3.容器适配器3.1. 什么是容器适配器3.2. STL标准库中stack和queue的底层结构3.3. deque的简单介绍3.3.1. deque原理介绍3.3.2. deque的缺陷3.3.3. 为什么选择deque作为stack和queue的底层默认容器 1.stack stack的…...

C++ RAII机制

C RAII机制 1. 介绍2. 示例2.1 示例一2.2 示例二 3. 使用 Reference: C RAII 浅析ChatGPT 相关文章: 3. C 并行编程(thread) 1. 介绍 RAII 的全称是 Resource Acquisition Is Initialization,它是一种编程技术,用于管理资源的…...

AI模型部署概述

心口如一,犹不失为光明磊落丈夫之行也。——梁启超 文章目录 :smirk:1. AI模型部署方法:blush:2. AI模型部署框架ONNXNCNNOpenVINOTensorRTMediapipe如何选择 :satisfied:3. AI模型部署平台 😏1. AI模型部署方法 在AI深度学习模型的训练中,…...

【Rust 日报】2023-05-17 pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架 pgx是一个用于在 Rust 中开发 PostgreSQL 扩展的框架,并力求尽可能地惯用和安全。pgx 支持 Postgres v10-v14。 主要特征: 带有 cargo-pgx 的完全托管的开发环境; # 快速创建新的扩展 cargo pgx new# 安装新的&…...

二十、Zipkin持久化链路跟踪

目录 Zipkin持久化 使用mysql数据库持久化 1、创建zipkin数据库 2、启动zipkin使用以下脚本 3、访问接口(配置了sleuth链路跟踪) 使用ElasticSearch持久化 zipkin启动脚本 Zipkin持久化 Zipkin server默认会将追踪数据信息保存在内存中&#xff0…...

大学毕业设计这样做可以吗

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...

NSUserDefaults

目录 1. 简介2. 基本使用2.1 步骤2.2 对应接口2.2 示例代码 3. 常用接口及属性3.1 存储3.2 获取 4. 注意点4.1 NSUserDefaults 存储的对象全是不可变的4.2 将自定义类型数据读写 NSUserDefaults4.3 非即时写入 5.参考链接 1. 简介 NSUserDefaults是一个单例,在整个程…...

Windows下通过cwRsync备份到服务器服务器之间使用rsync备份传输

Windows下通过cwRsync备份到服务器&服务器之间使用rsync备份传输 Linux服务器配置Rsync服务端1、安装Rsync2、配置rsyncd.conf3、创建目录、密码文件并修改权限4、启动rsync服务 Windows配置cwRsync客户端1、下载并解压cwRsync客户端2、打开cmd,执行同步命令 Wi…...

IS420UCSBH4A 用于高速应用中的Mark VIe系列

控制器IS420UCSBH4A由通用电气公司设计,用于高速应用中的Mark VIe系列,采用1066 MHz EP80579英特尔处理器。该控制器可与Mark VIe系列一起用于EX2100e和LS2100e应用。 IS420UCSBH4A技术规格 系列马克维处理机类型1066兆赫EP80579英特尔型号IS420UCSBH4A…...

将JSON写入文件

首先需要引入fastjson的依赖文件&#xff0c;以下是maven的依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency> 然后是将json字符串写到…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...