zoukankan      html  css  js  c++  java
  • Python Logger类,保存本地文件并在console打印

    import logging
    import time
    import os
    
    
    
    class Logger:
        def __init__(self, logger_name):
            # 创建一个logger
            self.logger = logging.getLogger(logger_name)
    
            self.logger.setLevel(logging.DEBUG) # 需要记录的日志级别
            basedir = os.path.abspath(os.path.dirname(__file__))
            log_path = os.path.join(basedir, 'logs', time.strftime("%F"))  # 日志根目录 ../logs/yyyy-mm-dd/
    
            if not os.path.exists(log_path):
                os.mkdir(log_path)
    
            # # 创建一个handler,用于写入日志文件
            log_name = os.path.join(log_path, 'out.log')
            fh = logging.FileHandler(log_name, encoding='utf-8', mode='a')  # 指定utf-8格式编码,避免输出的日志文本乱码
            fh.setLevel(logging.DEBUG) # 需要写入的日志级别
    
            # 创建一个handler,用于将日志输出到控制台
            ch = logging.StreamHandler()
            ch.setLevel(logging.INFO) # 需要到控制台的日志级别
    
            # 定义handler的输出格式
            formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)
    
            # 给logger添加handler
            self.logger.addHandler(fh)
            self.logger.addHandler(ch)
    
        def get_log(self):  # 定义一个函数,回调logger实例"""
            return self.logger
    
        def shutdown(self):
            for handler in self.logger.handlers[:]:
                self.logger.removeHandler(handler)
    

    使用

    import Logger
    
    logger = Logger('TYPE_NAME') # 初始化
    
    # 不同级别的日志
    logger.get_log().info('MESSAGE')
    logger.get_log().warning('MESSAGE')
    logger.get_log().error('MESSAGE')
    logger.get_log().critical('MESSAGE')
    logger.get_log().debug('MESSAGE')
    
    logger.shutdown() # 释放logger.注意,如果不释放日志内会出现冗余记录
    
  • 相关阅读:
    让文字在标签li的底部
    根据不同的浏览器对不同元素进行css调整
    根据ie浏览器不同的类别选择不同的css
    ASP流程控制语句
    asp动态生成google的sitemap地图的代码
    glusterfs 思维导图
    利用saltstack管理边缘计算节点
    ACK EDGE 实战
    /dev/shm 容器下调优
    MySQL DBA 001
  • 原文地址:https://www.cnblogs.com/bionexit/p/14772488.html
Copyright © 2011-2022 走看看