#!/usr/bin/env python # -*- coding:utf-8 -*- import logging import os from logging.handlers import RotatingFileHandler loggerLevel = logging.INFO root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) log_dir = root_path + '/logs' # log_dir = "logs" console_formatter = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s' json_formatter = '%(message)s' logger_dict = dict() def create_logger(log_name, log_type): g_logger = logging.getLogger(log_name) rt = log_name.split('_')[0] log_path = "%s/%s" % (log_dir, rt) if not os.path.exists(log_path): os.makedirs(log_path) logfile = log_name + ".log" log_file = "%s/%s" % (log_path, logfile) console = logging.StreamHandler() console.setFormatter(logging.Formatter(console_formatter)) handler = RotatingFileHandler(log_file, maxBytes=2 * 1204 * 1024, backupCount=1) fmt = json_formatter if log_type == 'json' else console_formatter handler.setFormatter(logging.Formatter(fmt)) g_logger.addHandler(console) g_logger.addHandler(handler) g_logger.setLevel(loggerLevel) return g_logger def get_logger(log_name, log_type='file'): if log_name not in logger_dict: create_logger(log_name, log_type) logger_dict[log_name] = logging.getLogger(log_name) return logging.getLogger(log_name) bom_log = get_logger('bomserver')