예제 #1
0
def setup_custom_logger(name):
    handler = logging.StreamHandler()
    handler.setFormatter(colorlog.LevelFormatter(
        fmt={
            'DEBUG': '{log_color}[{levelname}:{module}] {message}',
            'INFO': '{log_color}{message}',
            'WARNING': '{log_color}{levelname}: {message}',
            'ERROR': '{log_color}[{levelname}:{module}] {message}',
            'CRITICAL': '{log_color}[{levelname}:{module}] {message}',
        },
        datefmt=None,
        reset=True,
        log_colors={
            'DEBUG': 'cyan',
            'INFO': 'white',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'bold_red,bg_white',
        },
        secondary_log_colors={},
        style='{'))

    logger = logging.getLogger(name)
    
    # Change to INFO
    logger.setLevel(logging.DEBUG)
    logger.addHandler(handler)
    return logger
예제 #2
0
    def init():
        if len(logging.getLogger("").handlers) > 1:
            return

        shandler = logging.StreamHandler(stream=sys.stdout)
        shandler.setFormatter(colorlog.LevelFormatter(
            fmt = {
                "DEBUG": "{log_color}[{levelname}] {message}",
                "INFO": "{log_color}[{levelname}] {message}",
                "WARNING": "{log_color}[{levelname}] {message}",
                "ERROR": "{log_color}[{levelname}] {message}",
                "CRITICAL": "{log_color}[{levelname}] {message}"
            },
            log_colors = {
                "DEBUG": "cyan",
                "INFO": "white",
                "WARNING": "yellow",
                "ERROR": "red",
                "CRITICAL": "bold_red"
        },
            style = "{",
            datefmt = ""
        ))
        shandler.setLevel(logging.DEBUG)
        logging.getLogger(__package__).addHandler(shandler)
        logging.getLogger(__package__).setLevel(logging.DEBUG)
예제 #3
0
def get_logger (name=None, verbose=False, quiet=False):
    """Multilevel colored log using colorlog"""

    # Define conditional color formatter
    formatter = colorlog.LevelFormatter(
        fmt = {
            'DEBUG':'%(log_color)s\t[DEBUG]: %(msg)s',
            'INFO': '%(log_color)s\t%(msg)s',
            'WARNING': '%(log_color)s## %(msg)s ##',
            'ERROR': '%(log_color)sERROR: %(msg)s',
            'CRITICAL': '%(log_color)sCRITICAL: %(msg)s'},
        log_colors={
            'DEBUG': 'white',
            'INFO': 'green',
            'WARNING': 'bold_blue',
            'ERROR': 'bold_red',
            'CRITICAL': 'bold_purple'},
        reset=True)

    # Define logger with custom formatter
    logging.basicConfig(format='%(message)s')
    logging.getLogger().handlers[0].setFormatter(formatter)
    logger = logging.getLogger(name)

    # Define logging level depending on verbosity
    if verbose:
        logger.setLevel(logging.DEBUG)
    elif quiet:
        logger.setLevel(logging.WARNING)
    else:
        logger.setLevel(logging.INFO)

    return logger
예제 #4
0
def setup_logger(logger_name: str):
    """
    Setting up logging.
    """
    formatter = colorlog.LevelFormatter(
        fmt={
            "DEBUG": "{log_color}[{asctime}] [{name}] [{levelname}] {message}",
            "INFO": "{log_color}[{asctime}] [{name}] [{levelname}] {message}",
            "WARNING": "{log_color}[{asctime}] [{name}] [{levelname}] {message}",
            "ERROR": "{log_color}[{asctime}] [{name}] [{levelname}] {message}",
            "CRITICAL": "{log_color}[{asctime}] [{name}] [{levelname}] {message}",
        },
        log_colors={
            "DEBUG": "cyan",
            "INFO": "white",
            "WARNING": "yellow",
            "ERROR": "red",
            "CRITICAL": "bold_red"
        },
        style="{",
        datefmt="%Y-%m-%d %H:%M:%S"
    )
    logger = logging.getLogger(logger_name)
    logger.level = logging.INFO

    # Set the root logger level, too.
    logging.root.setLevel(logger.level)

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    return logger
예제 #5
0
def logger_setup():
    # Formats for colorlog.LevelFormatter
    log_level_formats = {
        'DEBUG': '%(log_color)s%(msg)s (%(module)s:%(lineno)d)',
        'INFO': '%(log_color)s%(msg)s',
        'WARNING': '%(log_color)sWARNING: %(msg)s (%(module)s:%(lineno)d)',
        'ERROR': '%(log_color)sERROR: %(msg)s (%(module)s:%(lineno)d)',
        'CRITICAL': '%(log_color)sCRITICAL: %(msg)s (%(module)s:%(lineno)d)',
    }

    log_colors = {
        'DEBUG': 'blue',
        'INFO': 'cyan',
        'WARNING': 'bold_yellow',
        'ERROR': 'red',
        'CRITICAL': 'red,bg_white'
    }

    # Initialize logger that can be used
    user_name = getpass.getuser()
    logger = logging.getLogger('elektronn3log')
    # Only set up the logger if it hasn't already been initialised before:
    if not len(logger.handlers) > 0:
        logger.setLevel(logging.DEBUG)

        lfile_formatter = logging.Formatter(
            '[%(asctime)s] [%(levelname)s]\t%(message)s',
            datefmt='%Y-%m-%d %H:%M:%S')
        uu = uuid.uuid4()
        # Temporary log file path, to be changed later.
        if os.path.isdir(f'/ptmp/{user_name}'):
            lfile_path = os.path.abspath(
                f'/ptmp/{user_name}/{uu}_elektronn3.log')
        else:
            lfile_path = os.path.abspath(
                f'/tmp/{user_name}_{uu}_elektronn3.log')
        lfile_level = logging.DEBUG
        lfile_handler = logging.FileHandler(lfile_path)
        lfile_handler.setLevel(lfile_level)
        lfile_handler.setFormatter(lfile_formatter)
        logger.addHandler(lfile_handler)

        lstream_handler = colorlog.StreamHandler(sys.stdout)
        lstream_handler.setFormatter(
            colorlog.LevelFormatter(fmt=log_level_formats,
                                    log_colors=log_colors))
        # set this to logging.DEBUG to enable output for logger.debug() calls
        lstream_level = logging.INFO
        lstream_handler.setLevel(lstream_level)
        logger.addHandler(lstream_handler)

        logger.propagate = False

        if False:  # Test log levels:
            logger.critical('== critical')
            logger.error('== error')
            logger.warning('== warn')
            logger.info('== info')
            logger.debug('== debug')
예제 #6
0
    def _setup_logging(self):
        if len(logging.getLogger(__package__).handlers) >= 1:
            LOG.debug("Skipping logger setup, already setup")
            return

        shandler = logging.StreamHandler(stream=sys.stdout)
        shandler.setFormatter(
            colorlog.LevelFormatter(fmt={
                'DEBUG':
                '{log_color}[{levelname}:{module}] {message}',
                'INFO':
                '{log_color}{message}',
                'WARNING':
                '{log_color}{levelname}: {message}',
                'ERROR':
                '{log_color}[{levelname}:{module}] {message}',
                'CRITICAL':
                '{log_color}[{levelname}:{module}] {message}',
                'EVERYTHING':
                '{log_color}[{levelname}:{module}] {message}',
                'NOISY':
                '{log_color}[{levelname}:{module}] {message}',
                'VOICEDEBUG':
                '{log_color}[{levelname}:{module}][{relativeCreated:.9f}] {message}',
                'FFMPEG':
                '{log_color}[{levelname}:{module}][{relativeCreated:.9f}] {message}'
            },
                                    log_colors={
                                        'DEBUG': 'cyan',
                                        'INFO': 'white',
                                        'WARNING': 'yellow',
                                        'ERROR': 'red',
                                        'CRITICAL': 'bold_red',
                                        'EVERYTHING': 'white',
                                        'NOISY': 'white',
                                        'FFMPEG': 'bold_purple',
                                        'VOICEDEBUG': 'purple',
                                    },
                                    style='{',
                                    datefmt=''))
        logging.getLogger(__package__).setLevel(logging.DEBUG)
        shandler.setLevel(self.config.debug_level)
        fh = logging.FileHandler(filename='logs/kanobot.log',
                                 encoding='utf-8',
                                 mode='w')
        fh.setLevel(self.config.debug_level)
        logging.getLogger(__package__).addHandler(fh)
        logging.getLogger(__package__).addHandler(shandler)
        LOG.debug("Set logging level to %s", self.config.debug_level_str)
        if self.config.debug_mode:
            dlogger = logging.getLogger('discord')
            dlogger.setLevel(logging.DEBUG)
            dhandler = logging.FileHandler(filename='logs/discord.log',
                                           encoding='utf-8',
                                           mode='w')
            dhandler.setFormatter(
                logging.Formatter('{asctime}:{levelname}:{name}: {message}',
                                  style='{'))
            dlogger.addHandler(dhandler)
예제 #7
0
파일: utils.py 프로젝트: jkulhanek/gqn
def setup_logging(level=logging.INFO):
    from tqdm import tqdm

    def is_console_handler(handler):
        return isinstance(handler,
                          logging.StreamHandler) and handler.stream in {
                              sys.stdout, sys.stderr
                          }

    class TqdmLoggingHandler(logging.StreamHandler):
        def emit(self, record):
            try:
                msg = self.format(record)
                tqdm.write(msg)
                self.flush()
            except (KeyboardInterrupt, SystemExit):
                raise
            except:  # noqa pylint: disable=bare-except
                self.handleError(record)

    logging.basicConfig(stream=sys.stdout, level=level)
    handler = TqdmLoggingHandler(sys.stdout)
    try:
        import colorlog
        formatter = colorlog.LevelFormatter(fmt={
            'DEBUG':
            '%(log_color)sdebug: %(message)s (%(module)s:%(lineno)d)%(reset)s',
            'INFO':
            '%(log_color)sinfo%(reset)s: %(message)s',
            'WARNING':
            '%(log_color)swarning%(reset)s: %(message)s (%(module)s:%(lineno)d)',
            'ERROR':
            '%(log_color)serror%(reset)s: %(message)s (%(module)s:%(lineno)d)',
            'CRITICAL':
            '%(log_color)scritical: %(message)s (%(module)s:%(lineno)d)%(reset)s',
        },
                                            log_colors={
                                                'DEBUG': 'white',
                                                'INFO': 'bold_green',
                                                'WARNING': 'bold_yellow',
                                                'ERROR': 'bold_red',
                                                'CRITICAL': 'bold_red',
                                            })
        handler.setFormatter(formatter)
    except (ModuleNotFoundError):
        # We do not require colorlog to be present
        pass
    logging._acquireLock()
    orig_handlers = logging.root.handlers
    try:
        logging.root.handlers = [
            x for x in orig_handlers if not is_console_handler(x)
        ] + [handler]
    except Exception:
        logging.root.handlers = orig_handlers
    finally:
        logging._releaseLock()
예제 #8
0
    def _setup_logging(self):
        if len(logging.getLogger(__package__).handlers) > 1:
            log.debug("Skip logging setup, already complete")
            return

        shandler = logging.StreamHandler(stream=sys.stdout)
        shandler.setFormatter(
            colorlog.LevelFormatter(fmt={
                "DEBUG":
                "{log_color}[{levelname}:{module}] {message}",
                "INFO":
                "{log_color}{message}",
                "WARNING":
                "{log_color}{levelname}: {message}",
                "ERROR":
                "{log_color}[{levelname}:{module}] {message}",
                "CRITICAL":
                "{log_color}[{levelname}:{module}] {message}"
            },
                                    log_colors={
                                        "DEBUG": "cyan",
                                        "INFO": "white",
                                        "WARNING": "yellow",
                                        "ERROR": "red",
                                        "CRITICAL": "bold_red"
                                    },
                                    style='{',
                                    datefmt=''))

        log.setLevel(self.config.debug_level)
        shandler.setLevel(self.config.debug_level)
        logging.getLogger(__package__).addHandler(shandler)

        log.debug("Set logging level to {0}".format(self.config.debug_level))

        if self.config.debug_mode:
            dlogger = logging.getLogger("discord")
            dlogger.setLevel(logging.DEBUG)
            os.makedirs("logs", mode=0o644, exist_ok=True)
            dhandler = logging.FileHandler(filename="logs/discord.log",
                                           encoding="utf-8",
                                           mode='w')
            dhandler.setFormatter(
                logging.Formatter("{asctime}:{levelname}:{name}: {message}",
                                  style='{'))
            dlogger.addHandler(dhandler)
예제 #9
0
def get_logger(name=None, verbose=False, quiet=False):
    """Multilevel colored log using colorlog"""

    # Define conditional color formatter
    formatter = colorlog.LevelFormatter(
        fmt={
            "DEBUG": "%(log_color)s\t[DEBUG]: %(msg)s",
            "INFO": "%(log_color)s\t%(msg)s",
            "WARNING": "%(log_color)s## %(msg)s ##",
            "ERROR": "%(log_color)sERROR: %(msg)s",
            "CRITICAL": "%(log_color)sCRITICAL: %(msg)s",
        },
        log_colors={
            "DEBUG": "white",
            "INFO": "green",
            "WARNING": "bold_blue",
            "ERROR": "bold_red",
            "CRITICAL": "bold_purple",
        },
        reset=True,
    )

    # Define logger with custom formatter
    logging.basicConfig(format="%(message)s")
    logging.getLogger().handlers[0].setFormatter(formatter)
    log = logging.getLogger(name)

    # Define logging level depending on verbosity
    if verbose:
        log.setLevel(logging.DEBUG)
    elif quiet:
        log.setLevel(logging.WARNING)
    else:
        log.setLevel(logging.INFO)

    return log
예제 #10
0
    logger.setLevel(logging.DEBUG)

    lfile_formatter = logging.Formatter(
        '[%(asctime)s] [%(levelname)s]\t%(message)s',
        datefmt='%Y-%m-%d %H:%M:%S')
    lfile_path = os.path.abspath('/tmp/elektronn2-%s.log' % user_name)
    lfile_level = logging.DEBUG
    lfile_handler = logging.FileHandler(lfile_path)
    lfile_handler.setLevel(lfile_level)
    lfile_handler.setFormatter(lfile_formatter)
    logger.addHandler(lfile_handler)

    if colorize:
        lstream_handler = colorlog.StreamHandler()
        lstream_handler.setFormatter(
            colorlog.LevelFormatter(fmt=log_level_formats,
                                    log_colors=log_colors))
    else:
        lstream_handler = logging.StreamHandler()  # log to stderr
    # set this to logging.DEBUG to enable output for logger.debug() calls
    lstream_level = logging.INFO
    lstream_handler.setLevel(lstream_level)
    logger.addHandler(lstream_handler)

    logger.propagate = False

    if False:  # Test log levels:
        logger.critical('== critical')
        logger.error('== error')
        logger.warning('== warn')
        logger.info('== info')
        logger.debug('== debug')
예제 #11
0
파일: run.py 프로젝트: treewords/ModuBot
    log.setLevel(logging.DEBUG)
    sh = logging.StreamHandler(stream=sys.stdout)
    sh.setFormatter(
        colorlog.LevelFormatter(fmt={
            'DEBUG':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'INFO':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'WARNING':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'ERROR':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'CRITICAL':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'EVERYTHING':
            '{log_color}[{levelname}:{module}:{name}] {message}',
            'NOISY':
            '{log_color}[{levelname}:{module}:{name}] {message}'
        },
                                log_colors={
                                    'DEBUG': 'cyan',
                                    'INFO': 'white',
                                    'WARNING': 'yellow',
                                    'ERROR': 'red',
                                    'CRITICAL': 'bold_red',
                                    'EVERYTHING': 'white',
                                    'NOISY': 'white'
                                },
                                style='{'))
    log.addHandler(sh)
    logger.addHandler(sh)
예제 #12
0
fh.setFormatter(
    logging.Formatter(
        "[{asctime}] {levelname} ({filename} L{lineno}, {funcName}): {message}",
        style='{'))
sh = logging.StreamHandler(stream=sys.stdout)
sh.setFormatter(
    colorlog.LevelFormatter(fmt={
        "DEBUG":
        "{log_color}{levelname} ({module} L{lineno}, {funcName}): {message}",
        "INFO":
        "{log_color}{message}",
        "WARNING":
        "{log_color}{levelname}: {message}",
        "ERROR":
        "{log_color}{levelname} ({module} L{lineno}, {funcName}): {message}",
        "CRITICAL":
        "{log_color}{levelname} ({module} L{lineno}, {funcName}): {message}"
    },
                            log_colors={
                                "DEBUG": "purple",
                                "INFO": "white",
                                "WARNING": "yellow",
                                "ERROR": "red",
                                "CRITICAL": "bold_red"
                            },
                            style='{'))
sh.setLevel(logging.DEBUG)

logger.addHandler(fh)
logger.addHandler(sh)
예제 #13
0
    "%(cyan)s[%(asctime)s] %(log_color)s[%(levelname)s]%(reset)s %(message)s")
CUSTOM_FMT = "%(log_color)s[%(asctime)s] [%(levelname)s] %(message)s"

FORMATTER = colorlog.LevelFormatter(fmt={
    "DEBUG": PRIMARY_FMT,
    "INFO": PRIMARY_FMT,
    "WARNING": PRIMARY_FMT,
    "ERROR": PRIMARY_FMT,
    "CRITICAL": PRIMARY_FMT,
    "*": CUSTOM_FMT,
    "+": CUSTOM_FMT,
    "-": CUSTOM_FMT,
    "!": CUSTOM_FMT
},
                                    datefmt="%H:%M:%S",
                                    log_colors={
                                        '*': 'cyan',
                                        '+': 'green',
                                        '-': 'red',
                                        '!': 'yellow',
                                        'DEBUG': 'blue',
                                        'INFO': 'green',
                                        'WARNING': 'yellow',
                                        'ERROR': 'red',
                                        'CRITICAL': 'bg_red,white'
                                    },
                                    secondary_log_colors={},
                                    style='%')

disableColor = "disable-col" in ' '.join(sys.argv)
if disableColor: