Logging模块 + traceback模块 + importlib模块 + requests模块

时间:2022-04-25 07:02:52

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

所以我们只能自定义

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模块

详细错误信息打印

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里面的中间件配置方法一个意思

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 返回的有好几种类型:

-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'}))

这里就是把用json把数据序列化成字符串在传过去

ret = requests.post(url='http://www.baidu.com',params={'k1':'v1','k2':'v2'},data={'user':‘zcq','pwd':'nb'},)    可以在POST中包含内容传过去