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 "+"\n")#title
            for i in range(4):
                info = getCpu()
                tmp_str = "%3s,%6s" % (i*record_interval,info)
                print(tmp_str)
                f.write(tmp_str+"\n")
    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
复制代码

 

posted @   乔小生1221  阅读(368)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示