# -*- coding:utf-8 -*-

"""
注:私有变量和函数,前面加双下划线(不要在后面也加双下划线);
"""

import os
import sys
import time
# 使用inspect模块动态获取当前运行的函数名
import inspect
# 日期头文件;
from datetime import datetime



'''
CBaseLog:日志基类
inspect.stack()[0][3]:获取当前函数的名称;
inspect.stack()[1][3]:获取当前函数的上一层函数的名称;
inspect.stack()[2][3]:获取当前函数的上上一层函数的名称;
'''


class CBaseLog:
    def __init__(self):
        self.__enableDebug = True
        self.__enableInfo = True
        self.__enableWarn = True
        self.__enableError = True
        self.__enableLog = True
        # 如果有配置文件,加载;
        self.__loadConfig()
    
    def __loadConfig(self):
        pass

    def __printlog(self, msg):
        # 时间/内容;
        print("%s %s") % (datetime.now().strftime('%Y-%m-%d %H:%M:%S'), msg)

    def debug(self, msg):
        if self.__enableDebug:
            # 类型/类名:函数/内容
            log_str = "\033[32m【DEBUG】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
            self.__printlog(log_str)

    def info(self, msg):
        if self.__enableInfo:
            # 类型/类名:函数/内容
            log_str = "\033[33m【INFO】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
            self.__printlog(log_str)

    def warn(self, msg):
        if self.__enableWarn:
            # 类型/类名:函数/内容
            log_str = "\033[34m【WARN】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
            self.__printlog(log_str)

    def error(self, msg):
        if self.__enableError:
            # 类型/类名:函数/内容
            log_str = "\033[31m【ERROR】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
            self.__printlog(log_str)

    def log(self, msg):
        if self.__enableLog:
            # 类型/类名/内容
            log_str = "\033[35m【LOG】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
            self.__printlog(log_str)
        
        
if __name__ == "__main__":
    pass