zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    4. Object
    3. string
    8. 滚动条美化
    7. 单位,移动布局
    2. js的异步
    2. 即时通讯
    让PHP更快的提供文件下载
    phpstorm+xdebug远程调试设置
    postman自动生成签名
    一位技术人员成长历程
  • 原文地址:https://www.cnblogs.com/qxh-beijing2016/p/13253841.html
Copyright © 2011-2022 走看看