Xagent更新- 日志模块 实习日记
2016-08-29 10:23
309 查看
http://www.jb51.net/article/88449.htm
logging 模块介绍
logging用法解析
初始化 logger = logging.getLogger(“endlesscode”),getLogger()方法后面最好加上所要日志记录的模块名字,后面的日志格式中的%(name)s 对应的是这里的模块名字
设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
Handler,常用的是StreamHandler和FileHandler,windows下你可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上
formatter,定义了最终log信息的顺序,结构和内容,我喜欢用这样的格式 ‘[%(asctime)s] [%(levelname)s]
#-*- coding:utf-8 -*- # 每天 00:00执行,立即升级所有在线的Agent镜像 import traceback import requests import json import time import datetime import logging # 配置日志信息 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', datefmt='%m-%d %H:%M', filename='myapp.log', filemode='w') # 定义一个Handler打印INFO及以上级别的日志到sys.stderr console = logging.StreamHandler() console.setLevel(logging.INFO) # 设置日志打印格式 formatter = logging.Formatter('%(asctime)s %(name)-12s: %(levelname)-8s %(message)s') console.setFormatter(formatter) #将定义好的console日志handler添加到root logging.getLogger('').addHandler(console) logging.info('this is a info.') logger1 = logging.getLogger('myapp.area1') logger2 = logging.getLogger('myapp.area2') logger1.debug('this is debug.') logger1.info('this is info.') logger2.warning('this is warning.') logger2.error('This is error.') def doTask(): #查找所有在线的设备 r = requests.get('**URL') if r.status_code == 200: try: res = r.json() device_list = res['result'] for d in device_list: #下发立即升级命令 address = d['device_ip'] + '_' + d['device_hash'] logging.info("----------update: %s------------"%address) print "-------------------update %s------------------" % address update_r = requests.post('**URL', data={'target':'RCM.getSystemUpgrade', 'args':json.dumps([1,'','']),'address':address}) try: if update_r.status_code == 200: #{u'status': 2000, u'message': {u'status': True, u'result': u'type 1 finished', u'task_id': u'b0a312b2-b144-47fc-a59d-e1905779894f'}} update_dic = update_r.json() if update_dic['status'] == 2000: logging.info("update: %s success"%address) print "update %s success" % address else: logging.info("update: %s error,detail is: %s"%(address,update_dic)) print "update %s error,detail is %s" % (address,update_dic) else: logging.info("update: %s error,detail is: %s"%(address,update_r.status_code)) print "update %s error,detail is %s" % (address,update_r.status_code) except Exception,e: logging.info(traceback.format_exc()) print traceback.format_exc() finally: update_r.close() except Exception,e: logging.info(traceback.format_exc()) print traceback.format_exc() else: print 'request **URL' % r.status_code r.close() if __name__ == '__main__': logging.info("==================================================================================") doTask()
logging 模块介绍
* logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过 logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用 getLogger方法返回同一个logger对象。 * handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0 到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。 * filter:提供一种优雅的方式决定一个日志记录是否发送到handler。 * formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。
logging用法解析
初始化 logger = logging.getLogger(“endlesscode”),getLogger()方法后面最好加上所要日志记录的模块名字,后面的日志格式中的%(name)s 对应的是这里的模块名字
设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
Handler,常用的是StreamHandler和FileHandler,windows下你可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上
formatter,定义了最终log信息的顺序,结构和内容,我喜欢用这样的格式 ‘[%(asctime)s] [%(levelname)s]
import logging logger = logging.getLogger("simple_example") logger.setLevel(logging.DEBUG) # 建立一个filehandler来把日志记录在文件里,级别为debug以上 fh = logging.FileHandler("spam.log") fh.setLevel(logging.DEBUG) # 建立一个streamhandler来把日志打在CMD窗口上,级别为error以上 ch = logging.StreamHandler() ch.setLevel(logging.ERROR) # 设置日志格式 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") ch.setFormatter(formatter) fh.setFormatter(formatter) #将相应的handler添加在logger对象中 logger.addHandler(ch) logger.addHandler(fh) # 开始打日志 logger.debug("debug message") logger.info("info message") logger.warn("warn message") logger.error("error message") logger.critical("critical message")
相关文章推荐
- `cocos2dx非完整` 日志模块 增量更新
- Windows Azure功能更新:Active Directory服务,Windows/VM备份,网站日志实时监控
- NS3 Logging Module 日志模块
- Liberty版本更新日志中文版本
- python 的日志logging模块学习
- 【小平工作日志】Linux 命令大全!(持续更新……)
- python 的日志logging模块学习
- AgileEAS.NET SOA中间件平台更新日志 2015-04-28
- WPS客户端更新日志留着备用
- Node.js 日志处理模块log4js
- oracel存储过程 根据excel 进行用户数据插入、角色绑定 或 用户数据更新、角色绑定或更新,并写入日志
- Oracle EBS OM(Order Management)模块日志收集方法
- update module (更新模块)
- paxos协议更新日志
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- python日志组件logging模块(二)
- 如何查看RPM包的更新日志Changelog
- IIS服务器的系统事件日志常见问题汇总(更新中)
- ubuntu conda 更新、下载模块包权限问题 'Permission denied'
- python之强大的日志模块