"""
日志操作类
"""
import logging
from utils.logger.eslog import CMRESHandler
from config import ES_CONF, ES_HOSTS, SYS_LOG_INDEX, LOG_LEVEL
import datetime
import time
def beijing_converter(sec):
if time.strftime('%z') == "+0800":
return datetime.datetime.now().timetuple()
return (datetime.datetime.now() + datetime.timedelta(hours=8)).timetuple()
auth_type = CMRESHandler.AuthType.BASIC_AUTH if ES_CONF.get('http_auth') else CMRESHandler.AuthType.NO_AUTH
auth_details = ES_CONF.get('http_auth') if ES_CONF.get('http_auth') else ('', '')
def get_es_logger(p_name, hosts=ES_HOSTS, index=SYS_LOG_INDEX, auth_type=auth_type, auth_details=auth_details, log_level=LOG_LEVEL, **kwargs):
"""
example: get_logger('test', [{'host': 'localhost'}], 'test_log_1', **{'event_id': 1000})
"""
es_enable = kwargs.get('es_enable', True)
_logger = logging.getLogger(p_name)
_logger.setLevel(log_level)
_logger.handlers.clear()
if es_enable:
print('es_logger:', p_name, hosts, auth_type, auth_details, index)
formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s')
formatter.converter = beijing_converter
_handler = CMRESHandler(hosts=hosts,
auth_type=auth_type,
auth_details=auth_details,
es_index_name=index,
buffer_size=0,
es_additional_fields=kwargs)
_handler.formatter = formatter
_logger.addHandler(_handler)
return _logger
if __name__ == '__main__':
logger = get_es_logger(p_name='system', index='test_logs', **{'api': '1'})
logger.info('test1111')
try:
s = 1 / 0
except Exception as e:
logger.exception(e)