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

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

 

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.jsqmd.com/news/53340/

相关文章:

  • 一文入门 LangGraph 开发
  • Real people are important.
  • 【pandas基础】用Pandas处理泰坦尼克号获救数据
  • Scrum冲刺阶段 Day Four
  • Day26光标类型cursor
  • why I can not fully accept měigu is good
  • is měigu good
  • Day26透明度
  • 部署django项目到阿里云服务器
  • New 2025 Xhorse Condor XC-003: Fast Precise Mechanical Key Cutting for Euro/American Cars
  • 2025-11-25-模拟赛
  • 自指自洽,磨砺洗礼,人非圣贤,孰能无过?塞翁失马,焉知非福?
  • CAD 二次开发应用 获取统计单行字体内的特定数据
  • CF2157E Adjusting Drones
  • Day4 Scrum冲刺博客
  • 帮助类
  • 2025 Original Xhorse Condor XC-002 PRO Key Cutting Machine: Rapid Precise for EU/US Cars
  • JSON序列化类
  • 致深度学习小白:一文入门分布偏移
  • Day26过渡属性
  • Yanhua 2025 BMW BDC2 Key Learning Bench Platform with Module38 for G Series All Key Lost
  • 选购攻略!2025 厨余处理器 7大品牌,中餐适配款优先级推荐
  • Day4-20251127
  • 摄相机标定的基本原理 - 教程
  • 上海国际学科哪家好?2025 IB 培训机构权威榜单
  • WPF populate BooksCollection via Dispatcher.InvokeAsync,DispatcherPriority.Background in mvvm
  • 2025 年 12 月 AMC12 竞赛备考:上海补课机构优选,选对助力高效冲分
  • 痞子衡嵌入式:i.MXRT中FlexSPI外设速度上限的三个影响因子(数据手册里的纠结)
  • Yanhua Mini ACDP-2 Module 38: BMW BDC2 Keys Learning LF Smart Key Antenna Bench Platform
  • 第二天—C++语法基础