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

