예제 #1
0
파일: logger.py 프로젝트: fsksf/tinigine
def get_logger(datetime_func=datetime.datetime.now, log_type='', level='INFO'):
    def logger_formatter(record, handler):
        if level == 'DEBUG':
            prefix = f'{log_type}:{str(record.lineno)}'
        else:
            prefix = f'{log_type}:{record.module}:{str(record.lineno)}'

        log_str = '{dt} {level}: [{prefix}]: {msg}'.format(
            dt=datetime_func().strftime(DATETIME_FORMAT),
            level=record.level_name,
            prefix=prefix,
            msg=record.message)

        return log_str

    if level == 'DEBUG':
        logger = logbook.Logger('[system] ', level=logbook.DEBUG)
    else:
        logger = logbook.Logger('[system] ', level=logbook.INFO)
    handler = StreamHandler(sys.stdout)
    handler.formatter = logger_formatter
    logger.handlers = [
        handler,
    ]
    return logger
예제 #2
0
    def __init__(self, stream, level):
        """ Virtually private constructor. """
        if UniLogger.__instance != None:
            raise Exception("Logger is already been instantiated")

        UniLogger.__instance = self
        UniLogger.logger = Logger('uni-logger')

        handler = StreamHandler(stream)
        handler.level_name = level
        handler.formatter = self.json_formatter
        handler.push_application()
예제 #3
0
                                                      record.time,
                                                      record.level_name,
                                                      MPI_RANK, time.time(),
                                                      record.message)
    if record.level_name == 'ERROR':
        msg += '\n' + record.formatted_exception
    return msg


level = env.LOGGING_LEVEL
log = Logger(env.LOGGING_FILE_PREFIX, level=level)

if env.LOGGING_ENABLED:
    if env.LOGGING_STDOUT:
        sh = StreamHandler(sys.stdout, bubble=True)
        sh.formatter = formatter
        # sh.format_string += ' (rank={})'.format(MPI_RANK)
        log.handlers.append(sh)
        # sh.push_application()

    if env.LOGGING_TOFILE:
        fh_directory = env.LOGGING_DIR
        fh_file_prefix = env.LOGGING_FILE_PREFIX
        fh = FileHandler(os.path.join(
            fh_directory, '{}-rank-{}.log'.format(fh_file_prefix, MPI_RANK)),
                         bubble=True,
                         mode=env.LOGGING_FILEMODE.lower())
        fh.formatter = formatter
        # fh.format_string += ' (rank={})'.format(MPI_RANK)
        log.handlers.append(fh)
        log.notice('Initialized (Version {})'.format(utools.__version__))
예제 #4
0
import sys

# 1. set format_string
sh = StreamHandler(
    sys.stdout,
    format_string=
    "[{record.time}] {record.level_name}: {record.channel}:{record.message}")

# 2. set format_string
sh.format_string = "[{record.time}] {record.level_name}: {record.channel}:{record.message}"


# 3. invoke the format function
def my_format_fun(record, handler):
    return " ".join([
        "[" + str(record.time) + "]",
        record.level_name + ":" + record.channel + ":", record.message
    ])


sh.formatter = my_format_fun


def main():
    info("test")


if __name__ == "__main__":
    with sh.applicationbound():
        main()