python 使用装饰器并记录log的示例代码


Posted in Python onJuly 12, 2019

1.首先定义一个log文件

# -*- coding: utf-8 -*-
import os
import time
import logging
import sys
log_dir1=os.path.join(os.path.dirname(os.path.dirname(__file__)),"logs")
today = time.strftime('%Y%m%d', time.localtime(time.time()))
full_path=os.path.join(log_dir1,today)
if not os.path.exists(full_path):
 os.makedirs(full_path)
log_path=os.path.join(full_path,"facebook.log")
def get_logger():
  # 获取logger实例,如果参数为空则返回root logger
  logger = logging.getLogger("facebook")
  if not logger.handlers:
   # 指定logger输出格式
   formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
 
   # 文件日志
   file_handler = logging.FileHandler(log_path,encoding="utf8")
   file_handler.setFormatter(formatter) # 可以通过setFormatter指定输出格式
 
   # 控制台日志
   console_handler = logging.StreamHandler(sys.stdout)
   console_handler.formatter = formatter # 也可以直接给formatter赋值
 
   # 为logger添加的日志处理器
   logger.addHandler(file_handler)
   logger.addHandler(console_handler)
 
   # 指定日志的最低输出级别,默认为WARN级别
   logger.setLevel(logging.INFO)
  # 添加下面一句,在记录日志之后移除句柄
  return logger

2.然后定义一个装饰器文件

在这里引用wraps,一个装饰器的装饰器,目的为了保持引用进来的函数名字不发生变化

#!/usr/bin/env python 
# encoding: utf-8
from functools import wraps
from logger.log import get_logger
import traceback
def decoratore(func):
 @wraps(func)
 def log(*args,**kwargs):
  try:
   print("当前运行方法",func.__name__)
   return func(*args,**kwargs)
  except Exception as e:
   get_logger().error(f"{func.__name__} is error,here are details:{traceback.format_exc()}")
 return log

3.在使用的时候直接在函数上面引用即可

@decorator
def start():
 print("666")

以上这篇python 使用装饰器并记录log的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
小小聊天室Python代码实现
Aug 17 Python
Python实现Kmeans聚类算法
Jun 10 Python
python的pip安装以及使用教程
Sep 18 Python
python学生信息管理系统(初级版)
Oct 17 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
python 实现单通道转3通道
Dec 03 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 #Python
Pycharm使用之设置代码字体大小和颜色主题的教程
Jul 12 #Python
python增加图像对比度的方法
Jul 12 #Python
Python 控制终端输出文字的实例
Jul 12 #Python
在Django的View中使用asyncio的方法
Jul 12 #Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 #Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 #Python
You might like
短波收音机简介
2021/03/01 无线电
PHP SQLite类
2009/05/07 PHP
php存储过程调用实例代码
2013/02/03 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
理解JS绑定事件
2016/01/19 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
python SMTP实现发送带附件电子邮件
2018/05/22 Python
flask入门之表单的实现
2018/07/18 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
extern是什么意思
2016/03/10 面试题
技校教师求职简历的自我评价
2013/10/20 职场文书
秋季运动会活动方案
2014/02/05 职场文书
植树节口号
2014/06/21 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2015年电工工作总结
2015/04/10 职场文书
2015年老干部工作总结
2015/04/23 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
mysql自增长id用完了该怎么办
2022/02/12 MySQL
Python pyecharts绘制条形图详解
2022/04/02 Python