1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/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()