|
- # -*- coding: utf-8 -*-
- # MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
- #
- # Copyright (c) 2014-2020 Megvii Inc. All rights reserved.
- #
- # Unless required by applicable law or agreed to in writing,
- # software distributed under the License is distributed on an
- # "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
- import logging
- import os
-
- _replaced_logger = None
-
-
- def get_logger():
- global _replaced_logger
- if _replaced_logger is not None:
- return _replaced_logger
- logger = logging.getLogger("megbrain")
- logger.propagate = False
- logger.setLevel(logging.INFO)
- handler = logging.StreamHandler()
- handler.setFormatter(MgbLogFormatter(datefmt="%d %H:%M:%S"))
- handler.setLevel(0)
- del logger.handlers[:]
- logger.addHandler(handler)
- _replaced_logger = logger
- return logger
-
-
- class MgbLogFormatter(logging.Formatter):
- def format(self, record):
- date = "\x1b[32m[%(asctime)s %(lineno)d@%(filename)s:%(name)s]\x1b[0m"
- msg = "%(message)s"
- if record.levelno == logging.DEBUG:
- fmt = "{} \x1b[32mDBG\x1b[0m {}".format(date, msg)
- elif record.levelno == logging.WARNING:
- fmt = "{} \x1b[1;31mWRN\x1b[0m {}".format(date, msg)
- elif record.levelno == logging.ERROR:
- fmt = "{} \x1b[1;4;31mERR\x1b[0m {}".format(date, msg)
- else:
- fmt = date + " " + msg
- self._style._fmt = fmt
- return super().format(record)
-
-
- def set_logger(logger):
- """replace the logger"""
- global _replaced_logger
- _replaced_logger = logger
- from .mgb import _register_logger
-
- _register_logger(logger)
|