Xagent更新- 日志模块 实习日记

原创 2016年08月29日 10:23:40

http://www.jb51.net/article/88449.htm

#-*- 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用法解析

  1. 初始化 logger = logging.getLogger(“endlesscode”),getLogger()方法后面最好加上所要日志记录的模块名字,后面的日志格式中的%(name)s 对应的是这里的模块名字
  2. 设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
  3. Handler,常用的是StreamHandler和FileHandler,windows下你可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上
  4. 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")
版权声明:本文为博主原创文章,未经博主允许不得转载。

RSA公钥,私钥和数字签名这样最好理解

一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。 我有一个文件,不能让别人看,我就用1加密了。别人找到了这...
  • cut001
  • cut001
  • 2016年11月16日 18:20
  • 4229

Day one(日志/日记)

  • 2014年12月31日 13:38
  • 13.03MB
  • 下载

lfhacks日记 日志源码

  • 2014年07月13日 09:02
  • 37KB
  • 下载

2017-04-28 DBA日记,各操作系统OS系统日志查看方法

背景: 如之前章节所介绍的,数据库问题分析的一个重要步骤就是收集数据,其中操作系统日志的收集便是其中一部份,所以为了能够快速准确收集到该部份的日志,我们必须了解各个操作系统日志的查看方式。 问...
  • harryho
  • harryho
  • 2017年04月29日 21:19
  • 172

Sql server 日记 (收缩数据库,DUMP日志)

转自 http://blog.csdn.net/liuhuayang/article/details/5771208 数据库服务器磁盘空间是一天比一天少,已经加了一块500G的硬盘了,可RAI...

简单易用的Qt日志模块

  • 2017年07月10日 16:21
  • 8KB
  • 下载

ThinkPHP内容管理系统开发日记(四)-- 配置信息与开发Longin模块以及模板

配置信息如下/php/user/conf/config.php
  • Tim_SK
  • Tim_SK
  • 2016年09月01日 11:49
  • 182

日志输出模块

  • 2013年11月14日 15:20
  • 6KB
  • 下载

简洁易用的日志模块

  • 2014年01月03日 21:01
  • 687KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Xagent更新- 日志模块 实习日记
举报原因:
原因补充:

(最多只允许输入30个字)