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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
Python中的多重装饰器
Apr 11 Python
浅析Python中signal包的使用
Nov 13 Python
Python中基础的socket编程实战攻略
Jun 01 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python ipset管理 增删白名单的方法
Jan 14 Python
python里dict变成list实例方法
Jun 26 Python
如何使用Python 打印各种三角形
Jun 28 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
使用Tensorboard工具查看Loss损失率
Feb 15 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
PHP 的几个配置文件函数
2006/12/21 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
PHP类的反射用法实例
2014/11/03 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
微信支付开发订单查询实例
2016/07/12 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python内置数据类型之列表操作
2018/11/12 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
django的autoreload机制实现
2020/06/03 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
校班主任推荐信范文
2013/12/03 职场文书
给物业的表扬信
2014/01/21 职场文书
投标服务承诺书
2014/05/28 职场文书
机械机修工岗位职责
2014/08/03 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015年工会工作总结
2015/03/30 职场文书
团队执行力培训心得体会
2015/08/15 职场文书