• 多进程写日志


    import logging
    from cloghandler import ConcurrentRotatingFileHandler
    
    import os
    
    
    class ColoredFormatter(logging.Formatter):
        def __init__(self, fmt=None):
            logging.Formatter.__init__(self, fmt=fmt)
    
        def format(self, record):
            COLORS = {
                'Black': '0;30',
                'Red': '0;31',
                'Green': '0;32',
                'Brown': '0;33',
                'Blue': '0;34',
                'Purple': '0;35',
                'Cyan': '0;36',
                'Light_Gray': '0;37',
    
                'Dark_Gray': '1;30',
                'Light_Red': '1;31',
                'Light_Green': '1;32',
                'Yellow': '1;33',
                'Light_Blue': '1;34',
                'Light_Purple': '1;35',
                'Light_Cyan': '1;36',
                'White': '1;37',
            }
            COLOR_SEQ = "33[%sm"
            RESET_SEQ = "33[0m"
    
            message = logging.Formatter.format(self, record)
    
            if record.levelno == logging.DEBUG:
                message = COLOR_SEQ % COLORS['White'] + message + RESET_SEQ
            elif record.levelno == logging.INFO:
                message = COLOR_SEQ % COLORS['Green'] + message + RESET_SEQ
                pass
            elif record.levelno == logging.WARNING:
                message = COLOR_SEQ % COLORS['Brown'] + message + RESET_SEQ
            elif record.levelno == logging.ERROR:
                message = COLOR_SEQ % COLORS['Red'] + message + RESET_SEQ
            elif record.levelno == logging.CRITICAL:
                message = COLOR_SEQ % COLORS['Purple'] + message + RESET_SEQ
            return message
    
    
    import logging.handlers
    
    
    def get_logger(log_name="",
                   log_path='logs',
                   single_log_file_size=1024  * 1024 * 500,
                   log_to_file=True,
                   backup_count=1):
        """:return a logger"""
    
        if not os.path.exists(log_path):
            try:
                os.makedirs(log_path)
            except Exception as e:
                print(str(e))
    
        logger = logging.getLogger("{}".format(log_name))
        logger.setLevel(logging.DEBUG)
    
        if log_name and log_to_file:
            # file
            log_file = "{}/{}.log".format(log_path, log_name)
            fh = logging.handlers.ConcurrentRotatingFileHandler(log_file, maxBytes=single_log_file_size, backupCount=backup_count)
            color_formatter = ColoredFormatter(fmt='%(asctime)s %(funcName)s[line:%(lineno)d] [%(levelname)s]: %(message)s')
            fh.setFormatter(color_formatter)
            fh.setLevel(logging.DEBUG)
            logger.addHandler(fh)
    
        # stdout
        sh = logging.StreamHandler()
        color_formatter = ColoredFormatter(fmt='%(asctime)s %(funcName)s[line:%(lineno)d] [%(levelname)s]: %(message)s')
        sh.setFormatter(color_formatter)
        sh.setLevel(logging.DEBUG)
        logger.addHandler(sh)
    
        return logger
    
    
    # logger = get_logger("app.log", '/tmp/api_service')
    logger = get_logger("app.log")
    
    if __name__ == '__main__':
        while True:
            logger.info(f"{list(range(300000,400000))}")
    
  • 相关阅读:
    拖拽 上传文件
    复制文本消息
    zTree 显示为‘aa’,当选择aa时,传的参数为‘22’
    移动端 动画 启动硬件加速
    jquery 停止动画与切换
    CSS小技巧-怎样让每行多余的文字显示文省略号?
    CSS小技巧-两个盒子之间的间距问题
    CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?
    小K的H5之旅-CSS基础(一)
    小K的H5之旅-HTML的基本结构与基本标签
  • 原文地址:https://www.cnblogs.com/c-x-a/p/10594849.html
Copyright © 2020-2023  润新知