18
18
19
19
CONSOLE_LOG_MSGID = 65501 # log 消息
20
20
21
- KBELOG_SCRIPT_INFO = 0x00000040
22
- KBELOG_SCRIPT_ERROR = 0x00000080
23
- KBELOG_SCRIPT_DEBUG = 0x00000100
24
- KBELOG_SCRIPT_WARNING = 0x00000200
25
- KBELOG_SCRIPT_NORMAL = 0x00000400
21
+
22
+ KBELOG_UNKNOWN = 0x00000000
23
+ KBELOG_PRINT = 0x00000001
24
+ KBELOG_ERROR = 0x00000002
25
+ KBELOG_WARNING = 0x00000004
26
+ KBELOG_DEBUG = 0x00000008
27
+ KBELOG_INFO = 0x00000010
28
+ KBELOG_CRITICAL = 0x00000020
29
+ KBELOG_SCRIPT_INFO = 0x00000040
30
+ KBELOG_SCRIPT_ERROR = 0x00000080
31
+ KBELOG_SCRIPT_DEBUG = 0x00000100
32
+ KBELOG_SCRIPT_WARNING = 0x00000200
33
+ KBELOG_SCRIPT_NORMAL = 0x00000400
26
34
27
35
logName2type = {
28
- "NORMAL" : KBELOG_SCRIPT_NORMAL ,
29
- "INFO" : KBELOG_SCRIPT_INFO ,
30
- "ERROR" : KBELOG_SCRIPT_ERROR ,
31
- "DEBUG" : KBELOG_SCRIPT_DEBUG ,
32
- "WARNING" : KBELOG_SCRIPT_WARNING ,
36
+ "PRINT" : KBELOG_PRINT ,
37
+ "ERROR" : KBELOG_ERROR ,
38
+ "WARNING" : KBELOG_WARNING ,
39
+ "DEBUG" : KBELOG_DEBUG ,
40
+ "INFO" : KBELOG_INFO ,
41
+ "CRITICAL" : KBELOG_CRITICAL ,
42
+ "S_NORM" : KBELOG_SCRIPT_NORMAL ,
43
+ "S_INFO" : KBELOG_SCRIPT_INFO ,
44
+ "S_ERR" : KBELOG_SCRIPT_ERROR ,
45
+ "S_DBG" : KBELOG_SCRIPT_DEBUG ,
46
+ "S_WARN" : KBELOG_SCRIPT_WARNING ,
33
47
}
34
48
35
49
class LoggerWatcher :
@@ -40,7 +54,6 @@ def __init__( self ):
40
54
"""
41
55
"""
42
56
self .socket = None
43
-
44
57
self .msgBuffer = "" .encode ()
45
58
46
59
def connect ( self , ip , port ):
@@ -61,18 +74,39 @@ def close( self ):
61
74
self .socket .close ()
62
75
self .socket = None
63
76
64
- def registerToLogger ( self , uid ):
77
+ def registerToLogger ( self , uid ):
65
78
"""
66
79
向logger注册
67
80
"""
81
+
68
82
msg = Define .BytesIO ()
69
83
msg .write ( struct .pack ("=H" , Logger_registerLogWatcher ) ) # command
70
- msg .write ( struct .pack ("=H" , struct .calcsize ("=iIiiccB" + "i" * Define .COMPONENT_END_TYPE + "BB" ) ) ) # package len
84
+ msg .write ( struct .pack ("=H" , struct .calcsize ("=iIiiccB" + "i" * Define .COMPONENT_END_TYPE + "BB" ) ) ) # package len
71
85
msg .write ( struct .pack ("=i" , uid ) )
72
- msg .write ( struct .pack ("=I" , 0xffffffff ) ) # logtypes filter
73
- msg .write ( struct .pack ("=iicc" , 0 , 0 , "\0 " .encode (), "\0 " .encode () ) ) # globalOrder, groupOrder, date, keyStr
74
- msg .write ( struct .pack ("=B" , Define .COMPONENT_END_TYPE ) ) # component type filter count
75
- msg .write ( struct .pack ("=" + "i" * Define .COMPONENT_END_TYPE , * list ( range ( Define .COMPONENT_END_TYPE ) ))) # component type filter
86
+ msg .write ( struct .pack ("=I" ,0xffffffff ) ) # logtypes filter
87
+ # msg.write( struct.pack("=I",KBELOG_WARNING ) ) # logtypes filter
88
+ msg .write ( struct .pack ("=iicc" , 0 , 0 , '\0 ' .encode (), '\0 ' .encode ())) # globalOrder, groupOrder, date, keyStr
89
+ msg .write ( struct .pack ("=B" ,Define .COMPONENT_END_TYPE ) ) # component type filter count
90
+ msg .write ( struct .pack ("=" + "i" * Define .COMPONENT_END_TYPE , * list (range (Define .COMPONENT_END_TYPE )))) # component type filter
91
+ msg .write ( struct .pack ("=BB" , 0 , 1 ) ) # isfind, first
92
+ self .socket .sendall ( msg .getvalue () )
93
+
94
+ def registerToLoggerForWeb ( self , uid , components_check , logtype , globalOrder , groupOrder , searchDate , keystr ):
95
+ """
96
+ 向logger注册
97
+ """
98
+
99
+ msg = Define .BytesIO ()
100
+ d1 = str (len (searchDate .encode ()))
101
+ d2 = str (len (keystr .encode ()))
102
+ msg .write ( struct .pack ("=H" , Logger_registerLogWatcher ) ) # command
103
+ msg .write ( struct .pack ("=H" , struct .calcsize ("=iIiiccB" + "i" * Define .COMPONENT_END_TYPE + "BB" ) + len (searchDate .encode ()) + len (keystr .encode ())) ) # package len
104
+ msg .write ( struct .pack ("=i" , uid ) )
105
+ msg .write ( struct .pack ("=I" ,logtype ) ) # logtypes filter
106
+ # msg.write( struct.pack("=I",KBELOG_WARNING ) ) # logtypes filter
107
+ msg .write ( struct .pack ("=ii" + d1 + "sc" + d2 + "sc" , globalOrder , groupOrder , searchDate .encode () ,'\0 ' .encode () , keystr .encode (), '\0 ' .encode () )) # globalOrder, groupOrder, date, keyStr
108
+ msg .write ( struct .pack ("=B" ,Define .COMPONENT_END_TYPE ) ) # component type filter count
109
+ msg .write ( struct .pack ("=" + "i" * Define .COMPONENT_END_TYPE , * list (list (components_check )))) # component type filter
76
110
msg .write ( struct .pack ("=BB" , 0 , 1 ) ) # isfind, first
77
111
self .socket .sendall ( msg .getvalue () )
78
112
@@ -139,7 +173,7 @@ def parseLog( self, stream ):
139
173
pos += 4
140
174
if buffLen < pos + dataLen :
141
175
self .msgBuffer = self .msgBuffer [pos - 4 :]
142
- return result
176
+ return result
143
177
144
178
if cmdID != CONSOLE_LOG_MSGID :
145
179
print ( "Unknown command.(id = %s)" % cmdID )
@@ -163,11 +197,10 @@ def receiveLog( self, callbackFunc, loop = False ):
163
197
if len ( msg ) == 0 :
164
198
print ( "Receive 0 bytes, over! fileno '%s'" % self .socket .fileno () )
165
199
return
166
-
200
+
167
201
ms = self .parseLog ( msg )
168
202
if ms :
169
203
callbackFunc ( ms )
170
-
171
204
continue
172
205
173
206
if not loop :
@@ -177,3 +210,68 @@ def receiveLog( self, callbackFunc, loop = False ):
177
210
self .sendActiveTick ()
178
211
179
212
213
+ class LogWatch (object ):
214
+ """
215
+ 日志输出
216
+ """
217
+ def __init__ (self ,wsInst , extaddr , extport , uid , components_check , logtype , globalOrder , groupOrder , searchDate , keystr ):
218
+ self .wsInst = wsInst
219
+ self .extaddr = extaddr
220
+ self .extport = extport
221
+ self .uid = uid
222
+ self .components_check = components_check
223
+ self .logtype = logtype
224
+ self .globalOrder = globalOrder
225
+ self .groupOrder = groupOrder
226
+ self .searchDate = searchDate
227
+ self .keystr = keystr
228
+ self .logger = LoggerWatcher ()
229
+
230
+ self .pops = ""
231
+ self .pops_end = ""
232
+ self .again = 0
233
+ self .first = 0
234
+ self .sendinfo = False
235
+
236
+ def do (self ):
237
+ """
238
+ """
239
+
240
+ self .logger .close ()
241
+ self .logger .connect ( self .extaddr , self .extport )
242
+ self .logger .registerToLoggerForWeb ( self .uid ,self .components_check , self .logtype , self .globalOrder , self .groupOrder ,self .searchDate , self .keystr )
243
+ def onReceivedLog (logs ):
244
+ if self .first < 2 :
245
+ for e in logs :
246
+ self .wsInst .send (e )
247
+ self .first = self .first + 1
248
+ self .pops = list .pop (logs )
249
+ if self .again > 0 :
250
+ if self .pops != self .pops_end :
251
+ self .again = self .again - 1
252
+ if self .again < 0 :
253
+ self .again = 0
254
+ if self .again < 6 :
255
+ if self .pops == self .pops_end :
256
+ self .again = self .again + 1
257
+ self .wsInst .send (self .pops )
258
+ self .pops_end = self .pops
259
+ self .logger .deregisterFromLogger ()
260
+ self .logger .receiveLog (onReceivedLog , True )
261
+
262
+ if self .wsInst :
263
+ self .wsInst .close ()
264
+ self .logger .close ()
265
+
266
+ def close (self ):
267
+ """
268
+ """
269
+ self .logger .close ()
270
+ self .logger .deregisterFromLogger ()
271
+
272
+ if self .wsInst :
273
+ self .wsInst .close ()
274
+ self .wsInst = None
275
+
276
+ self .extaddr = ""
277
+ self .extport = 0
0 commit comments