# log conf
import logging
import aliyun
import os
import time
from config import set_config
config_ = set_config()

# 本地日志存储路径
log_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "logs")
if not os.path.exists(log_path):
    os.makedirs(log_path)
# 文件的命名
log_name = os.path.join(log_path, '{}.log'.format(time.strftime('%Y%m%d')))

conf = {
    'version': 1,
    'formatters': {
        'rawFormatter': {
            'class': 'logging.Formatter',
            'format': '%(message)s'
        },
        'simpleFormatter': {
            'class': 'logging.Formatter',
            'format': '%(asctime)s %(levelname)s: %(message)s'
        }
    },
    'handlers': {
        'consoleHandler': {
            '()': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'simpleFormatter',
        },
        'slsHandler': {
            '()': 'aliyun.log.QueuedLogHandler',
            'level': 'INFO',
            'formatter': 'rawFormatter',
            # custom args:
            'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
            'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
            'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
            'project': config_.ALIYUN_LOG.get('PROJECT', ''),
            'log_store': "info",
            'extract_kv': True,
            'extract_json': True
        },
        'errorHandler': {
            '()': 'aliyun.log.QueuedLogHandler',
            'level': 'ERROR',
            'formatter': 'rawFormatter',
            # custom args:
            'end_point': config_.ALIYUN_LOG.get('ENDPOINT', ''),
            'access_key_id': config_.ALIYUN_LOG.get('ACCESSID', ''),
            'access_key': config_.ALIYUN_LOG.get('ACCESSKEY', ''),
            'project': config_.ALIYUN_LOG.get('PROJECT', ''),
            'log_store': "error",
            'extract_kv': True,
            'extract_json': True
        },
        'fileHandler': {
            '()': 'logging.FileHandler',
            'level': 'INFO',
            'formatter': 'simpleFormatter',
            'filename': log_name,
            'mode': 'a',
            'encoding': 'utf-8'
        }
    },
    'loggers': {
        'root': {
            'handlers': ['consoleHandler', ],
            'level': 'DEBUG'
        },
        'sls': {
            'handlers': ['consoleHandler', 'slsHandler'],
            'level': 'INFO',
            'propagate': False
        },
        'error': {
            'handlers': ['consoleHandler', 'errorHandler'],
            'level': 'ERROR',
            'propagate': False
        }
    }
}