log messages appearing twice with Python Logging

后端 未结 8 1377
天命终不由人
天命终不由人 2020-12-04 18:39

I\'m using Python logging, and for some reason, all of my messages are appearing twice.

I have a module to configure logging:

# BUG: It\'s outputting         


        
8条回答
  •  一整个雨季
    2020-12-04 19:23

    In my case I'd to set logger.propagate = False to prevent double printing.

    In below code if you remove logger.propagate = False then you will see double printing.

    import logging
    from typing import Optional
    
    _logger: Optional[logging.Logger] = None
    
    def get_logger() -> logging.Logger:
        global _logger
        if _logger is None:
            raise RuntimeError('get_logger call made before logger was setup!')
        return _logger
    
    def set_logger(name:str, level=logging.DEBUG) -> None:
        global _logger
        if _logger is not None:
            raise RuntimeError('_logger is already setup!')
        _logger = logging.getLogger(name)
        _logger.handlers.clear()
        _logger.setLevel(level)
        ch = logging.StreamHandler()
        ch.setLevel(level)
        # warnings.filterwarnings("ignore", "(Possibly )?corrupt EXIF data", UserWarning)
        ch.setFormatter(_get_formatter())
        _logger.addHandler(ch)
        _logger.propagate = False # otherwise root logger prints things again
    
    
    def _get_formatter() -> logging.Formatter:
        return logging.Formatter(
            '[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s')
    

提交回复
热议问题