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')
所以我们只能自定义
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中包含内容传过去