#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
##@package  
 | 
#  
 | 
# @todo:   
 | 
#  
 | 
# @author: Alee  
 | 
# @date 2018-7-18 ÉÏÎç11:40:23  
 | 
# @version 1.0  
 | 
#  
 | 
# @note:   
 | 
#  
 | 
#---------------------------------------------------------------------\  
 | 
  
 | 
import logging  
 | 
from time import localtime  
 | 
import TimeRotatingPathFileHandler  
 | 
import CommFunc  
 | 
  
 | 
__gLogger = None  
 | 
  
 | 
def InitLog( LogPath, LogName, printToConsole = True, isDebug = True, mode = 'H' ):  
 | 
    global __gLogger  
 | 
    logLevel = logging.INFO  
 | 
    if isDebug:  
 | 
        logLevel = logging.DEBUG  
 | 
          
 | 
    #ÉèÖÃÈÕÖ¾µÄ¹ýÂ˵ȼ¶  
 | 
    __gLogger = logging.getLogger(LogName)  
 | 
    __gLogger.setLevel(logLevel)  
 | 
      
 | 
      
 | 
    hdlr = TimeRotatingPathFileHandler.TimeRotatingPathFileHandler(LogPath, LogName, mode)  
 | 
    fs = '%(asctime)s\t%(levelname)-8s\t%(message)s'  
 | 
    dfs = '%Y-%m-%dT%H:%M:%S'  
 | 
    fmt = logging.Formatter(fs, dfs)  
 | 
    hdlr.suffix = "%Y-%m-%d_%H-%M-%S"  
 | 
    hdlr.setLevel(logLevel)  
 | 
    hdlr.setFormatter(fmt)  
 | 
    __gLogger.addHandler(hdlr)  
 | 
      
 | 
    if printToConsole:  
 | 
        console = logging.StreamHandler()  
 | 
        console.setFormatter(fmt)  
 | 
        __gLogger.addHandler(console)  
 | 
        console.setLevel(logLevel)  
 | 
  
 | 
__WARN_COUNT = 0  
 | 
__ERR_COUNT = 0  
 | 
__FATAL_COUNT = 0  
 | 
  
 | 
__LastWarnInfo = ""  
 | 
__LastWarnTime = ""  
 | 
__LastErrInfo = ""  
 | 
__LastErrTime = ""  
 | 
__LastFatalInfo = ""  
 | 
__LastFatalTime = ""  
 | 
  
 | 
def GetLastWarnInfo():  
 | 
    global __LastWarnInfo  
 | 
    return __LastWarnInfo  
 | 
  
 | 
def GetLastWarnTime():  
 | 
    global __LastWarnTime  
 | 
    return __LastWarnTime  
 | 
  
 | 
def GetLastErrInfo():  
 | 
    global __LastErrInfo  
 | 
    return __LastErrInfo  
 | 
  
 | 
def GetLastErrTime():  
 | 
    global __LastErrTime  
 | 
    return __LastErrTime  
 | 
  
 | 
def GetLastFatalInfo():  
 | 
    global __LastFatalInfo  
 | 
    return __LastFatalInfo  
 | 
  
 | 
def GetLastFatalTime():  
 | 
    global __LastFatalTime  
 | 
    return __LastFatalTime  
 | 
  
 | 
def Get_Warn_Count():  
 | 
    global __WARN_COUNT  
 | 
    return __WARN_COUNT  
 | 
  
 | 
def Get_Err_Count():  
 | 
    global __ERR_COUNT  
 | 
    return __ERR_COUNT  
 | 
  
 | 
def Get_Fatal_Count():  
 | 
    global __FATAL_COUNT  
 | 
    return __FATAL_COUNT  
 | 
  
 | 
def debug(msg):  
 | 
    global __gLogger  
 | 
    __gLogger.debug(msg)  
 | 
      
 | 
def info(msg):  
 | 
    global __gLogger  
 | 
    __gLogger.info(msg)  
 | 
      
 | 
def warn(msg):  
 | 
    global __WARN_COUNT  
 | 
    global __LastWarnInfo  
 | 
    global __LastWarnTime  
 | 
    global __gLogger  
 | 
    __WARN_COUNT += 1  
 | 
    __LastWarnInfo = msg  
 | 
    __LastWarnTime = CommFunc.GetCurrentDataTimeStr()  
 | 
    __gLogger.warning(msg)  
 | 
      
 | 
__ErrInfoList = []  
 | 
__OnErr = None  
 | 
  
 | 
def OnErr(onErr):  
 | 
    global __OnErr  
 | 
    __OnErr = onErr  
 | 
  
 | 
def error(msg):  
 | 
    global __ERR_COUNT  
 | 
    global __LastErrInfo  
 | 
    global __LastErrTime  
 | 
    global __gLogger  
 | 
    global __ErrInfoList  
 | 
    global __OnErr  
 | 
    __ERR_COUNT += 1  
 | 
    __LastErrInfo = msg  
 | 
    __LastErrTime = CommFunc.GetCurrentDataTimeStr()  
 | 
    if msg not in __ErrInfoList:  
 | 
        __ErrInfoList.append(msg)  
 | 
        if __OnErr:  
 | 
            errInfo = ""  
 | 
            for info in __ErrInfoList:  
 | 
                errInfo += "%s\r\n"%info  
 | 
            __OnErr(errInfo[:-2])   
 | 
    __gLogger.error(msg)  
 | 
      
 | 
def fatal(msg):  
 | 
    global __FATAL_COUNT  
 | 
    global __LastFatalInfo  
 | 
    global __LastFatalTime  
 | 
    global __gLogger  
 | 
    __FATAL_COUNT += 1  
 | 
    __LastFatalInfo = msg  
 | 
    __LastFatalTime = CommFunc.GetCurrentDataTimeStr()  
 | 
    __gLogger.critical(msg)  
 | 
  
 | 
def test():  
 | 
    import os  
 | 
    InitLog(os.getcwd(), "AD")  
 | 
    info('test')  
 | 
  
 | 
  
 | 
if __name__ == '__main__':  
 | 
    test()  
 | 
  
 |