python 使用裝飾器并記錄log的示例代碼
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實例,如果參數(shù)為空則返回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)
# 指定日志的最低輸出級別,默認(rèn)為WARN級別
logger.setLevel(logging.INFO)
# 添加下面一句,在記錄日志之后移除句柄
return logger
2.然后定義一個裝飾器文件
在這里引用wraps,一個裝飾器的裝飾器,目的為了保持引用進(jìn)來的函數(shù)名字不發(fā)生變化
#!/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("當(dāng)前運行方法",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.在使用的時候直接在函數(shù)上面引用即可
@decorator
def start():
print("666")
以上這篇python 使用裝飾器并記錄log的示例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python編寫學(xué)生成績管理系統(tǒng)的邏輯結(jié)構(gòu)及功能實現(xiàn)
這篇文章主要為大家介紹了python編寫學(xué)生成績管理系統(tǒng)實現(xiàn)八個功能示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
pip安裝py_zipkin時提示的SSL問題對應(yīng)
今天小編就為大家分享一篇關(guān)于pip安裝py_zipkin時提示的SSL問題對應(yīng),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
Python如何在循環(huán)內(nèi)使用list.remove()
這篇文章主要介紹了Python如何在循環(huán)內(nèi)使用list.remove(),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python對接六大主流數(shù)據(jù)庫(只需三步)
這篇文章主要介紹了Python對接六大主流數(shù)據(jù)庫(只需三步),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python利用解析JSON實現(xiàn)主機(jī)管理
JSON 是一種獨立于編程語言的數(shù)據(jù)格式,因此在不同的編程語言中都有對應(yīng)的解析器和生成器,本文主要介紹了Python如何通過解析JSON實現(xiàn)主機(jī)管理,感興趣的小伙伴可以了解一下2023-12-12
python簡單實現(xiàn)基于SSL的IRC bot實例
這篇文章主要介紹了python簡單實現(xiàn)基于SSL的IRC bot,實例分析了IRC機(jī)器人的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2015-06-06

