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

【Python】Python中的logging模块介绍和示例

Python中的logging模块是一个强大的内置模块,用于记录和跟踪应用程序的运行过程。它提供了灵活的日志记录功能,可以将日志消息输出到多个目标(如控制台、文件、远程服务器等),并支持不同的日志级别。以下是logging模块的一些关键概念和使用方法:

关键概念

  1. Logger: 日志记录器,用于生成日志消息。应用程序代码中使用logger对象记录日志。
  2. Handler: 处理器,定义日志消息的输出位置(如控制台、文件、网络等)。
  3. Formatter: 格式化器,定义日志消息的格式(如时间戳、日志级别、消息内容等)。
  4. Log Level: 日志级别,用于表示日志消息的严重程度。常见的日志级别有:
    • DEBUG: 详细的调试信息,通常用于诊断问题。
    • INFO: 一般的运行信息,表示程序正常运行。
    • WARNING: 警告信息,表示可能的问题。
    • ERROR: 错误信息,表示发生了严重的问题。
    • CRITICAL: 致命错误信息,表示程序无法继续运行。

基本用法

以下是一个简单的示例,展示了如何使用logging模块记录日志:

import logging# 创建一个Logger对象
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)  # 设置日志级别# 创建一个Handler对象,将日志输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)# 创建一个Formatter对象,定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)# 将Handler添加到Logger
logger.addHandler(console_handler)# 记录日志消息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

高级用法

将日志输出到文件

可以使用FileHandler将日志消息写入文件:

file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.ERROR)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

配置多个Handler

可以为同一个Logger配置多个Handler,以实现日志消息的多种输出方式:

logger.addHandler(console_handler)
logger.addHandler(file_handler)

使用配置文件配置日志

可以使用配置文件(如JSON或YAML)配置日志:

import logging.config
import jsonconfig = {"version": 1,"formatters": {"default": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}},"handlers": {"console": {"class": "logging.StreamHandler","level": "DEBUG","formatter": "default"},"file": {"class": "logging.FileHandler","level": "ERROR","formatter": "default","filename": "app.log"}},"root": {"level": "DEBUG","handlers": ["console", "file"]}
}logging.config.dictConfig(config)
logger = logging.getLogger()logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

自定义Logger

可以创建多个Logger对象,用于不同的模块或子系统:

module_logger = logging.getLogger('module_logger')
module_logger.setLevel(logging.INFO)
module_logger.addHandler(console_handler)module_logger.info('This is an info message from module_logger')

捕获异常信息

可以使用exception方法记录异常堆栈信息:

try:1 / 0
except ZeroDivisionError:logger.exception("Exception occurred")

logging模块是Python应用程序中记录和调试的重要工具,灵活配置和使用该模块可以帮助开发者更好地了解和维护代码。

相关文章:

【Python】Python中的logging模块介绍和示例

Python中的logging模块是一个强大的内置模块,用于记录和跟踪应用程序的运行过程。它提供了灵活的日志记录功能,可以将日志消息输出到多个目标(如控制台、文件、远程服务器等),并支持不同的日志级别。以下是logging模块…...

PXIe规格i3/i5/i7单板计算机控制器

是专为PXIe混合测试系统设计的主控制器,3U 12HP PXIe规格。该产品采用Intel Core™i3/i5/i7 第四代高性能处理器,内存可支持高达16G DDR3L。该系统PXI Express的link配置为通用的4Port 4lane的模式,数据吞吐量高达8GB/S。 CX786x提供丰富灵活…...

弱网对抗的策略有哪些?

在弱网环境下,数据传输可能会面临丢包、延迟、抖动等问题,因此采取合适的弱网对抗策略对于确保数据传输的稳定性和可靠性至关重要。以下是一些常见的弱网对抗策略: 数据压缩:使用压缩算法如Gzip、Brotli等对数据进行压缩&#xf…...

如何通过OMS加快大表迁移至OceanBase

OMS,是OceanBase官方推出的数据迁移工具,能够满足众多数据迁移场景的需求,现已成为众多用户进行数据迁移同步的重要工具。OMS不仅支持多种数据源,还具备全量迁移、增量同步、数据校验等功能,并能够对分表进行聚合操作&…...

讨论:WGS84与CGCS2000的坐标系怎么互转

前言: 今天我们要讨论一个问题:WGS84与CGCS2000的坐标系怎么互转? 对于有一定基础的朋友应该知道,WGS84和CGCS2000属于不同的椭球,如果进行严密的数学转换,是需要建立参数模型之后,再进行转换&…...

SpringCloud面试题

SpringCloud常见组件有哪些 注册中心组件:Eureka、Nacos 负载均衡组件:Ribbon 远程调用组件:OpenFeign 网关组件:Zuul、Gateway 服务保护组件:Hystrix、Sentinel 服务配置管理组件:SpringCloudConfig、Nac…...

深入了解Java Stream中的Collectors.partitioningBy()

在Java编程中,Stream API是一种强大的工具,它提供了处理集合数据的便捷方式。而Stream API中的Collectors.partitioningBy()方法则是其中一个十分有用的函数,它允许我们根据指定的条件将元素分成两个组。在本文中,我们将深入探讨这…...

下拉多选【bootstrap-multiselect】

1、引入资源 <link rel="stylesheet" href="${components}/bootstrap/css/bootstrap-multiselect.css"> <script src="${components}/bootstrap/js/bootstrap-multiselect.js"></script> 2、初始化 $("#topic-select&qu…...

建筑(八大员)报考条件

建筑八大员报考时间2024 建筑八大员每年考两次,上半年的考试时间一般在5-6月份,下半年的考试时间一般在10月左右。报名在考前2个月进行&#xff0c;2024年的考试时间和次数可能因省份而异&#xff0c;以住建厅通知为准。建筑八大员报考条件2024 1、年龄在18周岁以上(含18周…...

_remote.repositories作用

问题描述 明明我本地有某个依赖但是却还是报错&#xff0c;原因就是存在_remote.repositories且你的远程仓库中找不到该依赖&#xff0c;可能发生在你修改了远程仓库或镜像时。 例子 本地有这个依赖&#xff0c;但是报错。 解决 删除_remote.repositories文件&#xff0…...

2.3 Spark运行架构与原理

Spark运行架构由SparkContext、Cluster Manager和Worker构成。在集群模式下&#xff0c;Driver进程初始化SparkContext并向Cluster Manager申请资源&#xff0c;后者根据算法在Worker节点上启动Executor。Executor负责任务执行&#xff0c;反馈状态给Cluster Manager。任务由Ta…...

redis的跳表

typedef struct zskiplistNode {// 分值double score;// 成员对象robj *obj;// 后退指针struct zskiplistNode *backward;// 层struct zskiplistLevel {// 前进指针struct zskiplistNode *forward;// 跨度unsigned int span;} level[]; } zskiplistNode;跳表的节点查找算法可以…...

探索未知,开启海外盲盒新纪元——海外盲盒App,你的全球奇遇宝箱

一、引言 在快节奏、高压力的现代生活中&#xff0c;我们时常渴望一份来自未知的惊喜。为此&#xff0c;我们精心打造了一款全新的海外盲盒App&#xff0c;带你跨越地域界限&#xff0c;开启一场充满惊喜的全球奇遇之旅。 二、产品介绍 海外盲盒App是一款集购物、娱乐、文化…...

LeetCode2215找出两数组的不同

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;请你返回一个长度为 2 的列表 answer &#xff0c;其中&#xff1a;answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组…...

Git系列:git show 使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

python爬虫(五)之新出行汽车爬虫

python爬虫&#xff08;五&#xff09;之新出行汽车爬虫 接完最后一单&#xff0c;终于肝完了最后一个python爬虫——新出行爬虫&#xff0c;将https://www.xchuxing.com网站上所有的汽车爬虫全部抓取下来。 import requests import json import csv from lxml import etree …...

记录:卡尔曼滤波推导

参考&#xff1a;古月居-卡尔曼滤波 一、高斯分布&#xff08;Gaussian Distribution&#xff09; 一维高斯分布&#xff1a;随机变量 X X X服从数学期望 μ \mu μ、方差 σ 2 \sigma^2 σ2的正态分布&#xff0c;概率密度函数为 p ( x ) p(x) p(x)。 X ∼ N ( μ , σ 2 )…...

AI游戏外挂为何违法?

尊敬的读者们&#xff0c;大家好&#xff01;今天我想和大家探讨一个备受争议的话题——AI游戏外挂的合法性。近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI外挂逐渐成为游戏领域的一大毒瘤。那么&#xff0c;为什么AI游戏外挂会被视为违法行为呢&#xff1f;本…...

UVa1006/LA2238 Fixed Partition Memory Management

UVa1006/LA2238 Fixed Partition Memory Management 题目链接题意输入格式输出格式 分析AC 代码 题目链接 本题是2001年icpc世界总决赛的G题 题意 早期的多程序操作系统常把所有的可用内存划分成一些大小固定的区域&#xff0c;不同的区域一般大小不同&#xff0c;而所有区域的…...

Autosar架构

蓝框那种叫component&#xff0c;绿框的叫function cluster。 接口 有三种接口&#xff0c;RTE跟SWC之间链接的叫Autosar Interface&#xff0c;RTE跟BSW的Components链接是Standardized Interface&#xff0c;RTE跟BSW的services链接的是Standardized Autosar Interface。 St…...

从FAST到GAMPII:一份给GNSS新手的PPP数据下载与预处理避坑指南

从FAST到GAMPII&#xff1a;GNSS数据预处理全流程实战指南 1. 精密单点定位的数据基石 当你第一次打开GAMP软件准备进行北斗系统的精密单点定位分析时&#xff0c;是否曾被各种数据文件搞得晕头转向&#xff1f;观测文件(o)、导航文件(n/p)、差分码偏差(DCB)文件&#xff0c;…...

Win10 64 位专用 OpenClaw 小龙虾 AI 小白一键部署教程

适配系统&#xff1a;Windows10 64 位核心亮点&#xff1a;免命令行、免手动配置环境、解压即可安装&#xff0c;运行依赖全部内置&#xff0c;全程可视化操作&#xff0c;新手也能一次性顺利部署 2026 热门开源 AI 智能体专属优化&#xff1a;针对 Win10 系统定制适配&#xf…...

本地AI工具炸场!一周GitHub星标破万,云端AI正在向你的电脑迁移

2026年5月中旬,三个开源项目突然火了: Hermes Agent,连续3天登顶OpenRouter调用量榜首,累计消耗6.72万亿tokens ds4.c,Redis之父Salvatore Sanfilippo专为DeepSeek V4 Flash打造的推理引擎,发布不到一周获2600+星 DeepSeek-TUI,终端AI编程工具,上线四个月获3700+星,…...

Unity编辑器日志调试革命:Editor Console Pro深度解析

1. 为什么我删掉了Unity默认控制台的全部自定义脚本——从Editor Console Pro第一次启动说起 刚接手一个三年前的老项目&#xff0c;打开Unity编辑器第一件事就是点开Console窗口——结果满屏红色报错里混着几十条黄色警告&#xff0c;还有十几条被折叠的“Log”信息藏在层层嵌…...

双翌精翌亮相工业软件产业协同对接交流会,共筑国产精密测量新生态

本次交流会以“同心聚链、智造共赢”为主题&#xff0c;汇聚了来自全国各地的工业软件开发商、高端装备制造商、系统集成商以及行业专家&#xff0c;围绕工业软件国产化替代、软硬件协同适配、产业生态共建等核心议题展开深入探讨。在国家信创战略加速推进的大背景下&#xff0…...

边缘AI语音交互实战:从唤醒词识别到MCP外设控制的嵌入式实现

1. 项目概述&#xff1a;当边缘计算遇见语音交互 最近在折腾一个挺有意思的项目&#xff0c;核心是把语音交互的能力从云端“拽”下来&#xff0c;直接部署到边缘设备上&#xff0c;然后让它去控制各种MCP&#xff08;Microcontroller Peripheral&#xff09;外设。听起来像是智…...

3分钟解锁:让魔兽争霸3在现代Windows系统上完美运行的完整指南

3分钟解锁&#xff1a;让魔兽争霸3在现代Windows系统上完美运行的完整指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代Wind…...

服务网格实战:Istio与Linkerd对比选型与落地实践

服务网格实战&#xff1a;Istio与Linkerd对比选型与落地实践 大家好&#xff0c;我是迪哥。服务网格&#xff08;Service Mesh&#xff09;是微服务架构的基础设施层&#xff0c;负责服务间的通信、安全、监控和治理。从 Istio 到 Linkerd&#xff0c;我们对比了多种方案&#…...

AI气象模型统一基准:可复现、多源真值、时空一致的评测标尺

1. 这不是又一个“天气数据集”&#xff0c;而是一把标尺&#xff1a;为什么AI气象建模急需统一基准“AI Weather Models”这个词组最近两年在气象学会议、AI顶会和工业界技术白皮书里出现的频率&#xff0c;已经快赶上“大模型”本身了。但我和团队在去年参与三个不同机构的AI…...

老旧小区门禁改造:业主权益与合规指引

一、费用来源与使用规范小区门禁改造并非全部由业主自费承担&#xff0c;可按合规渠道统筹资金&#xff0c;优先使用公共补贴与专项维修资金。资金使用优先级&#xff1a;政府老旧小区改造财政补贴&#xff1e;住宅专项维修资金&#xff1e;业主自筹财政补贴&#xff1a;老旧小…...