python的日志使用装饰器,记录的日志文件记录

news/2025/11/27 23:29:30/文章来源:https://www.cnblogs.com/hechunfeng/p/19279770

 

python的日志使用装饰器

log.py

import logging
from functools import wraps
import os# --- 1. 日志配置(创建日志文件) ---
LOG_FILENAME = 'function_calls.log'# 确保在开始时清除旧日志文件,便于演示
if os.path.exists(LOG_FILENAME):os.remove(LOG_FILENAME)logging.basicConfig(level=logging.INFO,  # 设置最低记录级别为 INFOformat='%(asctime)s - %(levelname)s - %(message)s',filename=LOG_FILENAME,  # 日志文件名称filemode='a',  # 使用追加模式 ('a'),记录多次函数调用
)logger = logging.getLogger(__name__)# --- 2. 日志装饰器 ---
def log_function_call(func):"""
    一个简单的装饰器,用于记录函数的调用和返回结果。"""
@wraps(func)def wrapper(*args, **kwargs):# 记录函数调用信息args_repr = [repr(a) for a in args]kwargs_repr = [f"{k}={repr(v)}" for k, v in kwargs.items()]signature = ", ".join(args_repr + kwargs_repr)logger.info(f"调用函数 {func.__name__},参数: ({signature})")try:# 调用原函数result = func(*args, **kwargs)# 记录函数返回结果logger.info(f"函数 {func.__name__} 执行完毕,返回结果: {repr(result)}")return resultexcept Exception as e:# 记录异常信息logger.error(f"函数 {func.__name__} 执行失败,异常: {e}", exc_info=True)raise  # 重新抛出异常,保持原函数的行为return wrapper

在main函数导入

from log import log_function_call#在def上面@使用
#@log_function_call
#def write_json_file(data):  # 写入json

image

 

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

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

相关文章

一文入门 LangGraph 开发

注意: 本博客/笔记并不适合新手, 适合有一定的开发经验, 快速上手开发的老油条. 2024-05-22 LangGraph [N_LangChain] [[N_LangServe]] git langgraph 项目页 官页 - overview 官页 - 教程 LangGraph is a library for…

Real people are important.

we are not politicians, we dont need to hide some truth in the Internet, and spread some can not be touched.

【pandas基础】用Pandas处理泰坦尼克号获救数据

Python数据分析实战:用Pandas处理泰坦尼克号获救数据 准备工作 在开始数据分析前,需导入Pandas和NumPy库并设置别名(行业通用规范,简化代码书写): import pandas as pd # 数据处理核心库,别名为pd import nump…

Scrum冲刺阶段 Day Four

一、站立会议纪要 1. 已完成工作实现文件列表查询接口 开发文件上传组件 编写核心功能测试用例 实现全局异常处理 封装请求拦截器2. 今日计划工作 开发文件列表页面 文件界面 管理员登录 + 用户管理页 实现启用/禁用用…

Day26光标类型cursor

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

is měigu good

maybe but I need the real person check. měigu maybe good, but people who speak English are not. but for rběn, rběnyǔ is same bad like rběn. I want to see some really English, then I can determine …

Day26透明度

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

New 2025 Xhorse Condor XC-003: Fast Precise Mechanical Key Cutting for Euro/American Cars

The Key Cutting Challenge: Struggling to Keep Up with Precision and Speed For automotive repair shops across Europe and America, key cutting can be a make-or-break task. Mechanics often face frustratin…

2025-11-25-模拟赛

受益匪浅! 考试中 T1 一眼秒了,然后因为读题不仔细,以为输出的是个 - 字符串就行了,然后虚空调试了 30min. T2 没有想到正解,但是很显然的是如果说 1 的边是桥一定不行,所以现场推导了一下 tarjan,还是推出来了…

自指自洽,磨砺洗礼,人非圣贤,孰能无过?塞翁失马,焉知非福?

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891对命题"自指自洽,磨砺洗礼,人非圣贤,孰能无过?塞翁失马,焉知非福?"进行严格的加密推理分析。 ▮ 辩证本质:容错系统的优化机制 命题揭示了自…

MateChat + DevUI + DeepSeek:教育智能答疑助手改造实践

前言 一、教育系统网站现状与核心痛点 当前教育系统网站(尤其是职业教育、在线答疑类平台)普遍面临 “服务标准化、体验割裂化、效果模糊化” 的三大核心问题,具体表现为: 1、个性化缺失: 统一化服务无法适配个体…

量子计算新突破:高精度量子比特控制技术

研究人员实现了对量子比特的极高精度控制,创造了类似量子晶体管的设备。这项突破通过微波控制单量子比特,将状态转换错误率降低至千分之一以下,有望显著提升量子计算机的可靠性。最佳量子"晶体管"问世 或…

CAD 二次开发应用 获取统计单行字体内的特定数据

应用场景:获取autoCAD中多个单行字体的特定符号前数据,连乘求和 工具 autolisp 主要代码(defun c:CountTextNums (/ ss i ent txt val sum)(setq sum 0)(prompt "\n请选择包含文本的单行文字对象...")(set…

Day4 Scrum冲刺博客

Day4 Scrum冲刺博客 1. 团队会议 todo补充会议照片 1)昨天已完成的工作前端实现了数据过滤与分页核心逻辑与分页控制功能 完成了表单中的通知公告初稿后端实现了大模型api的意图整理和栏目分类 实现了关键词划分算法 …

CF2157E Adjusting Drones

不关心序列形态,将 \(c_i\) 也就是 \(i\) 的出现次数记录下来。 那么每次操作就是选择 \(c_i > k\) 的 \(i\),分裂成 \(1\) 个 \(i\) 和 \(c_i - 1\) 个 \(i + 1\)。 从小到大遍历 \(i\),可以记录一个目前剩下多…

帮助类

public class DevHelper{/// <summary>/// 绑定ImageComBoBoxEdit下拉框数据/// </summary>/// <typeparam name="T">泛型类型</typeparam>/// <param name="cmb">…

2025 Original Xhorse Condor XC-002 PRO Key Cutting Machine: Rapid Precise for EU/US Cars

The Challenge: Complex Keys, Complex Solutions In European and American automotive landscapes, modern vehicles often feature advanced key designs—from high-security dimple keys to anti-theft transpond…

JSON序列化类

public class JsonFileHelper{public static string JsonConfigFileName = "SunSofteWareAppConfig.Json";#region 配置文件读写/// <summary>/// 将配置对象写入程序执行目录指定名称的文件/// </…