示例#1
0
def get_logger(name, config=None) -> logging.Logger:
    """
    function to get logger with extra settings from config
    :param config:
    :return:
    """
    l_log_config = config['LOGGING'] if config else log_config
    project = config['GENERAL']['tm4jProjectKey'] if config else gen_config['tm4jProjectKey']
    reporter = config['EXECUTION']['reporter'] if config else exc_config['reporter']
    l_log_level = get_log_level(l_log_config['configLevel'])

    console_formatter = logging.Formatter('-->  %(asctime)s - %(name)s - %(levelname)s %(funcName)s: %(message)s')
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(console_formatter)

    error_log_handler = logging.FileHandler('logs/error.log')
    error_log_handler.setFormatter(console_formatter)
    error_log_handler.setLevel(logging.ERROR)

    splunk_formatter = SplunkFormatter(logging_app='tm4j_adapter',
                                       project=project,
                                       reporter=reporter)
    splunk_handler = SplunkHandler(host=log_config['splunkHost'],
                                   port=log_config['splunkPort'],
                                   token=log_config['splunkToken'],
                                   index=log_config['splunkIndex'],
                                   record_format=True,
                                   sourcetype='json',
                                   debug=False)
    splunk_handler.setFormatter(splunk_formatter)
    splunk_handler.setLevel(logging.INFO)

    logger = logging.getLogger(name)
    logger.addHandler(console_handler)
    logger.addHandler(error_log_handler)
    logger.addHandler(splunk_handler)
    logger.setLevel(l_log_level)
    return logger