88from enum import IntEnum
99import requests
1010import arrow
11- from apscheduler .schedulers .background import BackgroundScheduler
1211from .common import API_URL
1312
1413class _Log ():
1514 def __init__ (self , interceptor ):
1615 self .path = '/log'
1716 self .interceptor = interceptor
18- self ._timer = None
19- self .entries = []
2017 self .level = Level .INFO
2118 self .fields = {}
22- self .batch_size = 60
23- self .dispatch_interval = 60
2419
2520 # Automatically report uncaught fatal error
2621 def excepthook (type , value , trace ):
2722 self .fatal (message = str (value ), stack_trace = '' .join (traceback .format_tb (trace )))
2823 sys .__excepthook__ (type , value , trace )
2924 sys .excepthook = excepthook
3025
31- def _dispatch (self ):
32- if len (self .entries ) == 0 :
33- return
34- try :
35- r = requests .post (API_URL + self .path , auth = self .interceptor , data = json .dumps (self .entries ))
36- if not 200 <= r .status_code < 300 :
37- data = r .json ()
38- raise LogError (data ['code' ], data ['message' ])
39- finally :
40- self .entries .clear ()
26+ def _dispatch (self , entry ):
27+ r = requests .post (API_URL + self .path , auth = self .interceptor , data = json .dumps (entry ))
28+ if not 200 <= r .status_code < 300 :
29+ data = r .json ()
30+ raise LogError (data ['code' ], data ['message' ])
4131
4232 def add_fields (self , ** kwargs ):
4333 self .fields .update (kwargs )
@@ -60,23 +50,14 @@ def fatal(self, **kwargs):
6050 def _log (self , level , ** kwargs ):
6151 if level < self .level :
6252 return
63-
64- if self ._timer is None :
65- self .timer = BackgroundScheduler ()
66- self .timer .add_job (self ._dispatch , 'interval' , seconds = self .dispatch_interval )
67- self .timer .start ()
6853
6954 kwargs ['time' ] = arrow .now ().format ('YYYY-MM-DDTHH:mm:ss.SSSZ' )
70- for k , v in self .fields .items ():
71- kwargs [k ] = v
7255 kwargs ['level' ] = level .name
73- self .entries .append (kwargs )
7456
75- if level == Level .FATAL or len (self .entries ) >= self .batch_size :
76- try :
77- self ._dispatch ()
78- except LogError as err :
79- print ('log error: code={}, message={}' .format (err .code , err .message ))
57+ try :
58+ self ._dispatch (kwargs )
59+ except LogError as err :
60+ print ('log error: code={}, message={}' .format (err .code , err .message ))
8061
8162class Level (IntEnum ):
8263 DEBUG = 0
0 commit comments