要求:
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')