Python日志输出管理既可在控制打印,又能记入日志文件,且能按级别输出

要求:

1、在控制台打印日志;

2、记如指定日志文件;

3、按不同的级别输出;

4、定义日志工具类,减少代码量。

贴代码

import logging
import sys

LOG_FORMAT = "%(asctime)s_%(levelname)s_%(name)s[line:%(lineno)d]: %(message)s"
LOG_FILE_NAME = 'logs/log.log'
LOG_ERROR_FILE_NAME = 'logs/error.log'


class LogUtil:

    def __init__(self):
        print("初始化:LogUtil")

    @staticmethod
    def get_logger(class_name):
        logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, filename=LOG_FILE_NAME, filemode='a')
        logger = logging.getLogger(class_name)
        logger.setLevel(logging.INFO)

        rf_handler = logging.StreamHandler(sys.stderr)  # 默认是sys.stderr
        rf_handler.setLevel(logging.DEBUG)
        rf_handler.setFormatter(logging.Formatter(LOG_FORMAT))

        f_handler = logging.FileHandler(LOG_ERROR_FILE_NAME)
        f_handler.setLevel(logging.ERROR)
        f_handler.setFormatter(logging.Formatter(LOG_FORMAT))

        logger.addHandler(rf_handler)
        logger.addHandler(f_handler)

        return logger


log = LogUtil.get_logger("class_name")
log.debug('debug message')
log.info('info message')
log.warning('warning message')
log.error('error message')
log.critical('critical message')

猜你喜欢

转载自blog.csdn.net/jiahao1186/article/details/89574506