zoukankan      html  css  js  c++  java
  • python 初始化Logger

    import logging
    import sys
    
    
    def setup_logger(name, logfile, level):
        log_format = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(filename)s:%(lineno)d [%(funcName)s]: '
                                       '%(message)s', '%Y-%m-%d %H:%M:%S')
        logger = logging.getLogger(name)
        logger.setLevel(logging.DEBUG)
    
        # output to the screen, print log if log level is higher than DEBUG
        logstd = logging.StreamHandler()
        logstd.setLevel(logging.DEBUG)
        logstd.setFormatter(log_format)
        logger.addHandler(logstd)
    
        # output to the log file, write log to file if log level is higher than WARN
        logfile = logging.FileHandler(logfile, mode='w+')
        logfile.setFormatter(log_format)
        logfile.setLevel(logging.WARN)
        logger.addHandler(logfile)
    
        # Handle stderr, let stdout operate as normal, in order for print() to work
        class StreamToLogger(object):
            ''' Will just forward logs to the logger '''
            def __init__(self, logger, log_level):
                self.logger = logger
                self.log_level = log_level
                self.linebuf = ''
    
            def write(self, buf):
                ''' Standard write function '''
                for line in buf.rstrip().splitlines():
                    self.logger.log(self.log_level, line.rstrip())
    
            def flush(self):
                ''' Standard flush function, nothing to do though '''
                pass
        sys.stderr = StreamToLogger(logger, logging.ERROR)
    
        return logger
    
    logger = setup_logger('rizhiwenjian', './file1.log', 'debug')
    logger.info("hello a")
  • 相关阅读:
    【接口平台】上报接口处理时间
    【性能测试】吞吐量上不去的问题
    vue层级选择器多选
    打家劫舍 II
    打家劫舍
    房屋染色 II
    距离顺序排列矩阵单元格
    根据身高重建队列
    将 x 减到 0 的最小操作数
    确定两个字符串是否接近
  • 原文地址:https://www.cnblogs.com/tlmn2008/p/8483355.html
Copyright © 2011-2022 走看看