Logging模塊 + traceback模塊 + importlib模塊 + requests模塊

Logiging模塊日誌級別

CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0

只能寫入到一個文件,屢次聲明無效
import logging

logging.basicConfig(
#     filename='l1.log',
#     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
#     datefmt='%Y-%m-%d %H:%M:%S %p',
#     level=logging.INFO      #這裏定義這個值是閥值,若是超過這個數了纔會寫入文件中
# )
# logging.log(logging.ERROR,'123123')

因此咱們只能自定義linux

def error_log(message):
    #建立文件對象
    file_1_1 = logging.FileHandler('error.log', 'a+', encoding='utf-8')
    fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s")
    file_1_1.setFormatter(fmt)
    # 建立日誌對象
    logger1 = logging.Logger('error', level=logging.ERROR)
    
    # 日誌對象和文件對象建立關係
    logger1.addHandler(file_1_1)

    logger1.log(logging.FATAL,message)

def run_log(message):
    file_1_1 = logging.FileHandler('run.log', 'a+', encoding='utf-8')
    fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s")
    file_1_1.setFormatter(fmt)
    # 建立日誌對象
    logger1 = logging.Logger('run', level=logging.ERROR)
    # 日誌對象和文件對象建立關係
    logger1.addHandler(file_1_1)

    logger1.log(logging.FATAL,message)

traceback模塊

詳細錯誤信息打印django

class NicPlugin(BasePlugin):
    def linux(self):
        """
        執行命令,獲取資產信息
        :return:
        """
        ret = BaseResponse()
        try:
            result = self.cmd('nic')
            ret.data = result
        except Exception as e:
            v = traceback.format_exc() 
            ret.status = False
            ret.error = v
            # 寫入本地日誌
            obj = LoggerHelper.instance()
            obj.error_logger.log(50,v)
        return ret

 importlib模塊

這個方法就跟django裏面的中間件配置方法一個意思json

import importlib
file_path,class_name = v.rsplit(','1)
print(file_path,class_name) 
##例如輸出的是目錄下文件 和 類名
m=importlib.import_module(file_path)     #以字符串形式導入模塊

cls=getattr(m,class_name)
obj=cls()

requests模塊

settings.API=‘www.baidu.com’
response = requests.post(
            url=settings.API,
            json = info
            #若是傳輸格式是json的話,它就會把你的值先序列化,而後在傳給API  實際上代碼也就是以json.dumps發過去
            # data = info  #若是是data  那你傳什麼,它就給api裏面發什麼
        )
        
request.POST實際上是從body裏面把數據拿回來.轉換成字典,讓你使用的!!
    def get_host_list(self):
        import json
        response = requests.get(settings.API)
        host_list = json.loads(response.text)    #因此的數據都是在text中 
        return host_list

 實際上request 返回的有好幾種類型:api

-text        字符串類型
-content    字節類型(bytes)
-status_code    狀態碼
-cookies    
-headers    響應頭

(請求頭和請求體 是由2個換行符分割的)

例如:ret = requests.post(url='http://www.baidu.com',params={'k1':'v1','k2':'v2'},json=json.dumps({'user':‘zcq','pwd':'nb'}))cookie

這裏就是把用json把數據序列化成字符串在傳過去post

ret = requests.post(url='http://www.baidu.com',params={'k1':'v1','k2':'v2'},data={'user':‘zcq','pwd':'nb'},)    能夠在POST中包含內容傳過去url

相關文章
相關標籤/搜索