python 实现cpu每分钟使用率-附加logger日志

#coding=utf-8
#!/usr/bin/python3

import psutil
import time
import log

record_interval = 60 # record is second
logger=log.logger()
def getCpu():
    logger.info("%s"%"Go to the get CPU function.")
    try:
        cpu = str(psutil.cpu_percent(interval=record_interval ))+"%"
    except Exception as e:
        logger.error("%s"%e)
        cpu=" "
    return cpu

def main():
    logger.info("Coming in main function.")
    now = time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime(time.time()))
    fname = now+"-report.csv"
    try:
        with open('%s' % fname,'w') as f:
            title_str = "Time, CPU "
            print(title_str)
            f.write("Time, CPU "+"
")#title
            for i in range(4):
                info = getCpu()
                tmp_str = "%3s,%6s" % (i*record_interval,info)
                print(tmp_str)
                f.write(tmp_str+"
")
    except IOError as e:
        logger.error(e)
        pass

if __name__=="__main__":
    logger.info("Starting Now")
    main()
    logger.info("End Program")

logger日志

# -*- coding: utf-8 -*-
# 初始化logger
import logging
import logging.handlers
import sys

import time


class logger:
    log = logging.getLogger()
    # 日志格式,可以根据需要设置
    fmt = logging.Formatter('[%(asctime)s][%(filename)s][%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
    logname = './log.log'
    # 日志输出到文件,日志名称,大小,保存个数
    handle1 = logging.handlers.RotatingFileHandler(logname, maxBytes=1024*1024*8, backupCount=3)
    handle1.setFormatter(fmt)
    # 同时输出到屏幕,便于实施观察
    handle2 = logging.StreamHandler(stream=sys.stdout)
    handle2.setFormatter(fmt)
    log.addHandler(handle1)
    log.addHandler(handle2)

    # 设置日志基本,这里设置为INFO,表示只有INFO级别及以上的会打印
    log.setLevel(logging.INFO)

    # 日志接口,用户只需调用这里的接口即可,这里只定位了INFO, WARNING, ERROR三个级别的日志,可根据需要定义更多接口
    @classmethod
    def info(cls, msg):
        cls.log.info(msg)
        return

    @classmethod
    def warning(cls, msg):
        cls.log.warning(msg)
        return

    @classmethod
    def error(cls, msg):
        cls.log.error(msg)
        return
原文地址:https://www.cnblogs.com/qxh-beijing2016/p/13253841.html