• python logging模块日志回滚RotatingFileHandler


    # coding=utf-8
    import logging
    import time
    import os
    import logging.handlers
    
    def logger(appname,rootstdout=True):
    
        log_fmt= "%(asctime)s --%(name)s [%(levelname)s]:\n%(message)s"
        c_fmt="%(asctime)s --%(name)s [%(levelname)s]:\n%(message)s"
        date_format = "%Y-%m-%d %H:%M:%S %a"
        #设置Console输出level
        logging.basicConfig(level=logging.DEBUG,
                                format=c_fmt,
                                datefmt=date_format,
    
                                )
    
        list_level=["Error","Info","Warning","Debug"]
        stamp = time.strftime("%Y%m%d", time.localtime())+".log"
        logsdir=os.path.join(os.getcwd(),"logs")
        if os.path.exists(logsdir):
            for p in list_level:
                if os.path.exists(os.path.join(logsdir,p)):
                    pass
                else:
                    os.mkdir(os.path.join(logsdir,p))
        else:
            os.mkdir(logsdir)
            list_level=["Error","Info","Warning","Debug"]
            for p in list_level:
                 print(os.path.join(logsdir,p))
                 os.mkdir(os.path.join(logsdir,p))
    
        f_dict={}
        for i in list_level:
            filename=os.path.join(logsdir,i,stamp)
            f_dict[i]=filename
        logger= logging.getLogger(root)
    
        for k,v in f_dict.items():
                handler=logging.handlers.RotatingFileHandler(filename=v, maxBytes=1024*1024*50, backupCount=5,encoding="utf-8",delay=False)
                h_fmt=logging.Formatter(log_fmt)
                handler.setFormatter(h_fmt)
                if k==list_level[0]:
                    handler.setLevel(logging.ERROR)
                elif k==list_level[1]:
                    handler.setLevel(logging.INFO)
                elif k== list_level[2]:
                     handler.setLevel(logging.WARNING)
                else :
                     handler.setLevel(logging.DEBUG)
                logger.addHandler(handler)
        logger.propagate = rootstdout
        return  logger
    
    if __name__ == "__main__":
            logger=logger("root",rootstdout=True)
            while True:
                time.sleep(0.01)
                logger.info("file test",exc_info=True)
                logger.debug("bebug test")
                logger.error("error test")
                logger.warning("warning test")
    
    C:\Python37\python.exe C:/Users/Administrator/PycharmProjects/Supro/src/rotating_rewrite.py
    2019-03-21 23:32:40 Thu --SshTest.class [INFO]:
    file test
    NoneType: None
    2019-03-21 23:32:40 Thu --SshTest.class [DEBUG]:
    bebug test
    2019-03-21 23:32:40 Thu --SshTest.class [ERROR]:
    error test
    2019-03-21 23:32:40 Thu --SshTest.class [WARNING]:
    warning test
    2019-03-21 23:32:40 Thu --SshTest.class [INFO]:
    file test
    NoneType: None
    2019-03-21 23:32:40 Thu --SshTest.class [DEBUG]:
  • 相关阅读:
    洛谷 P1498 南蛮图腾
    洛谷 P1538 迎春舞会之数字舞蹈
    洛谷 P1112 波浪数
    洛谷 P1102 A−B数对
    数字量化值Digital Number, 辐射亮度Radiance, 反射率Reflectance,发射率Emissive
    ENVI下基于劈窗算法从MODIS数据中反演海表温度
    ENVI 5.1安装教程
    一些链接
    1、GeometryService计算面积和长度(Calculate_Feature_Length_Or_Area)功能实现
    1、GeometryService的缓冲区(Buffer)功能实现
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/10540178.html
Copyright © 2020-2023  润新知