logger

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
"""

 

posted on 2019-02-01 20:26  webch  阅读(162)  评论(0)    收藏  举报

导航