import os
import logging
import configparser
# TrafficGo-inference
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def read_config():
conf_path = os.path.join(BASE_DIR, 'trafficgo', 'traffic.ini')
config = configparser.ConfigParser()
config.read(conf_path, encoding='utf8')
log_conf = config['log']
# 保存目录
log_dir = log_conf['log_dir']
# 输出到屏幕或者文件选项
fh_log = log_conf['fh_log']
ch_log = log_conf['ch_log']
# 日志级别
log_level = log_conf['log_level']
fh_level = log_conf['fh_level']
ch_level = log_conf['ch_level']
return log_dir, fh_log, ch_log, log_level, fh_level, ch_level
def log_path(log_dir, log_name):
# 设置默认保存目录
if not log_dir:
log_dir = os.path.join(BASE_DIR, 'inference_log')
if not os.path.exists(log_dir):
os.mkdir(log_dir)
log_file_path = os.path.join(log_dir, '%s.log' % log_name)
return log_file_path
def my_logger(log_name):
log_dir, fh_log, ch_log, log_level, fh_level, ch_level = read_config()
# 生成 logger 对象
logger_obj = logging.getLogger(log_name)
logger_obj.setLevel(log_level)
formatter = logging.Formatter('%(asctime)s - %(pathname)s - %(lineno)d - %(levelname)s - %(message)s')
if fh_log == 'yes':
# 输出到文件
log_file_path = log_path(log_dir, log_name)
fh = logging.FileHandler(log_file_path)
fh.setLevel(fh_level)
fh.setFormatter(formatter)
if ch_log == 'yes':
# 输出到屏幕
ch = logging.StreamHandler()
ch.setLevel(ch_level)
ch.setFormatter(formatter)
if logger_obj.handlers:
logger_obj.handlers.pop()
if fh_log == 'yes':
logger_obj.addHandler(fh)
if ch_log == 'yes':
logger_obj.addHandler(ch)
return logger_obj
logger = my_logger('Inference')
"""
[log]
log_dir=inference_log
;save log to log_dir directory
fh_log=yes
ch_log=yes
;fh_log:Save to file,ch_log:print to console; value:yes OR no
log_level=INFO
fh_level=INFO
ch_level=INFO
;log_level should not upper than fh_level or ch_level
"""