logging库使用教程

news/2026/1/21 23:47:36/文章来源:https://www.cnblogs.com/solicit/p/19514364

logging日志模块

logging是python常用的日志模块,logging涉及三个概念:

  • logger可以理解为记者,决定写什么
  • handler可以理解为发布渠道,决定发到哪里
  • formatter可以理解为文章格式,决定排版格式
  • Level可以理解为重要程度,决定哪些日志的要记录

导入语句

import logging
from functools import wraps

获取日志记录器

logger=logging.getLogger(__name__) # 获取记录器
logger.setLevel(logging.DEBUG) # 设置日志级别

添加控制台处理器

handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)

设置日志格式

formatter = logging.Formatter('%(asctime)s - %(name)s - [%(levelname)s]: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

建议demo1

import logging
from functools import wraps
logger=logging.getLogger(__name__) # 获取记录器
logger.setLevel(logging.DEBUG) # 设置日志级别
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - [%(levelname)s]: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
print('hello')
def happy(func):@wraps(func)def wrapper():logger.info("this is a log system")func()return wrapper    @happy
def hi():print('name')hi()
print(hi.__name__) # 输出的是hi

建议demo2

import logging
import logging.configLOGGING_CONFIG = {'version': 1,'disable_existing_loggers': False,'formatters': {'detailed': {'format': '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s'},'simple': {'format': '%(levelname)s - %(message)s'}},'handlers': {'console': {'class': 'logging.StreamHandler','level': 'INFO','formatter': 'simple','stream': 'ext://sys.stdout'},'file': {'class': 'logging.FileHandler','level': 'DEBUG','formatter': 'detailed','filename': 'app_debug.log','mode': 'a'},'error_file': {'class': 'logging.FileHandler','level': 'WARNING','formatter': 'detailed','filename': 'app_error.log','mode': 'a'}},'loggers': {'': {  # 根日志器'level': 'DEBUG','handlers': ['console', 'file', 'error_file']},'database': {'level': 'INFO','handlers': ['console'],'propagate': False  # 不传递给根日志器}}
}# 使用配置
logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger(__name__)  # 获取当前模块的日志器

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

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

相关文章

【课程设计/毕业设计】基于springboot的隧道云视频监控管理信息平台设计与实现隧道内事故、火灾、车辆滞留等问题监察【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

SpringBoot:封装 starter

01 Starter 核心机制 SpringBoot 核心思想是约定大于配置,而 Starter 正是这一思想的核心落地载体。 简单来说,Starter 把某一类功能的依赖管理、默认配置、自动装配逻辑打包成一个独立 Jar 包。 项目只需引入这个 Jar 包,就能直接使用对应功…

滴滴 wsgsig secdd-challenge

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由 此产生的一切后果均与作者无关! 部分python代码 url "ota/re…

RabbitMQ 在大数据领域的故障排查与解决方案

RabbitMQ 在大数据领域的故障排查与解决方案 关键词:RabbitMQ、大数据、消息队列、故障排查、性能优化、高可用性、消息丢失 摘要:本文深入探讨RabbitMQ在大数据环境下的常见故障及其解决方案。我们将从RabbitMQ的核心架构出发,分析其在大数据场景下面临的挑战,详细介绍故障…

Linux 内核漏洞提权

一、 内核提权的核心原理Linux 采用权限分级机制(root:0,普通用户:1-65535),内核运行在最高权限的内核态(Ring 0),用户程序运行在用户态(Ring 3)。内核提权的…

连接 AI 的隐形纽带:深度解构 MCP 传输层——从 Stdio 到 SSE 的实战抉择与架构差异

文章目录 🛰️ 连接 AI 的隐形纽带:深度解构 MCP 传输层——从 Stdio 到 SSE 的实战抉择与架构差异 📡🏗️ 第一章:协议与通道的解耦——MCP 通信的底层逻辑1.1 JSON-RPC 2.0:MCP 的通用语言1.2 传输层的两…

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现 基于SpringBoot的农业科研院所作物数据智慧管理平台的设计与实现面向农科机构的SpringBoot作物全生命周期

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现8h3n8w22 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在“互联网农业”快速渗透的今天,农科所…

测试转网络安全如何弯道超车?

目录😭 测试的痛,谁懂?1. 重复劳动,永无止境2. 被动等待,毫无主动权3. 技术含量低,成长受限❓ 转行网安1. 测试经验,天然就是安全优势2. 技能高度重叠,转型零成本3. 工作模式更自由&…

Java计算机毕设之基于springboot的智慧医疗网上预约系统智慧医疗服务-智慧医疗服务平台(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

微服务架构演进实战 从单体到微服务的拆分原则与DDD入门

目录 💡 先说说我经历的微服务"车祸现场" ✨ 摘要 1. 为什么需要从单体转向微服务? 1.1 单体的痛苦现实 1.2 微服务的核心优势 2. 领域驱动设计(DDD)核心概念 2.1 战略设计:划分业务边界 2.2 战术设…

python mqgg 发送 json 文件

pip install paho-mqtt 发送json,含有音频文件; import json, base64 import paho.mqtt.client as mqtt import timedef on_connect(client, userdata, flags, rc):if rc 0:print("[A] Connected to broker")client.subscribe(TOPIC_SUB)pri…

学习日记day64

Day64_0121专注时间:目标是:5h30~6h。实际:5h47min每日任务:饭后的休息(25min),学习间歇的休息(15min)都用手表计时器来监督{step1}40min二刷1道力扣hot100昨天的题再做一…

GGUF、Safetensors、ONNX三种格式

https://blog.csdn.net/woshihlf/article/details/149123005 GGUF、Safetensors、ONNX三种格式

Java毕设项目:基于springboot的智慧医疗网上预约系统(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

springboot_ssm815大学生校园图书借阅购买管理系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着高校图书馆信息化建设的不断推进,传统的人工管理模式已难以满足师生对图书借阅与购买的高效需求。基于…

#对象模型

Qt 对象模型的核心是元对象系统(Meta-Object System)Qt的对象模型是Qt核心特性的基础,它定义了对象的组织和交互方式 Qt的对象模型基于C的面向对象编程的原则,而我们又可以大致理解为对象模型是由QObject类以及它的特性元对象系统…

强烈安利8个AI论文平台,本科生搞定毕业论文!

强烈安利8个AI论文平台,本科生搞定毕业论文! AI 工具让论文写作不再难 对于许多本科生来说,毕业论文的撰写是一个既重要又令人头疼的任务。从选题、收集资料到撰写初稿、反复修改,每一步都可能让人感到力不从心。而随着 AI 技术的…

springboot_ssm816大学运动场地预约器材租借管理系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着高校体育运动的普及和场地资源的有限性,传统的人工管理方式已无法满足师生对运动场地和器材的高效预约…

leetcode 热题

leetcode 热题目录1、无重复字符的最长子串(3)2、LRU缓存机制(146)3、反转链表(206)4、数组中的第K个最大元素(215) 1、无重复字符的最长子串(3) 2、LRU缓存机制(146) 3、反转链表(206) 两个指针,prev和…

[ACTF2020 新生赛]Upload 1(一句话木马加蚁剑)

上传图片一句话木马,他的后缀名一定是白名单里的 如果图片一句话木马太大,记得先改一下图片像素,让文件减小,再生成图片一句话木马上传时打开BP拦截,将.jpg改为.phtml 再点击放行 phtml文件相当于php文件的早期形式&am…