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")

  

  

最新文章

  1. 描述Linux shell中单引号,双引号及不加引号的简单区别(计时2分钟)
  2. Android显示基础--单位与尺寸
  3. 文件系统:Ext3和Ext4
  4. checkbox的三种状态处理
  5. jQuery 模板插件jquery-tmpl
  6. c# mongo 返回指定的列
  7. NTOPNG,用来平时优化网站性能,用处大的
  8. windows server 2008 应用程序池自动关闭 C:\Windows\system32\RpcProxy\RpcProxy.dll failed to load
  9. ES6入门2
  10. Aliase_小白学Python_Day0_前言
  11. Redis 慢日志
  12. Python中的threadlocal
  13. Scrapy定时执行爬取任务与定时关闭任务
  14. IDEA中使用lombok插件
  15. 读取excel日期数据问题
  16. 面向对象【day07】:多态(九)
  17. Codeforces 937D - Sleepy Game
  18. C#LinQ语法
  19. (转)谈谈RTP传输中的负载类型和时间戳
  20. HDU 1711 Number Sequence (字符串匹配,KMP算法)

热门文章

  1. WOW.js 的使用方法
  2. 剑指offer-反转链表15
  3. pyinstaller加密打包
  4. Python杂篇
  5. mac下使用clion构建boost库
  6. 点击查看大图Activity
  7. 判断python字典中key是否存在的两种方法
  8. lintcode-86-二叉查找树迭代器
  9. 会话描述协议(SDP)介绍
  10. A - 移动的骑士