13
13
14
14
from fluent import sender
15
15
16
- class FluentRecordFormatter (object ):
17
- def __init__ (self , encoding = 'utf-8' ):
16
+ class FluentHandler (logging .Handler ):
17
+ '''
18
+ Logging Handler for fluent.
19
+ '''
20
+ def __init__ (self ,
21
+ tag ,
22
+ host = 'localhost' ,
23
+ port = 24224 ,
24
+ timeout = 3.0 ,
25
+ verbose = False ,
26
+ encoding = 'utf-8' ):
27
+ logging .Handler .__init__ (self )
28
+ self .tag = tag
29
+ self .sender = sender .FluentSender (tag ,
30
+ host = host , port = port ,
31
+ timeout = timeout , verbose = verbose )
18
32
self .hostname = socket .gethostname ()
19
33
self .fsencoding = sys .getfilesystemencoding ()
20
34
self .encoding = encoding
21
35
22
- def format (self , record ):
36
+ def emit (self , record ):
37
+ self .sender .emit_with_time (None , record .created , self ._build_structure (record ))
38
+
39
+ def _close (self ):
40
+ self .sender ._close ()
41
+
42
+ def _build_structure (self , record ):
23
43
data = {
24
44
u'time' : datetime .fromtimestamp (record .created ).isoformat (),
25
45
u'sys_msecs' : record .msecs ,
@@ -36,7 +56,7 @@ def format(self, record):
36
56
u'sys_processname' : self ._decode (record .processName ),
37
57
u'sys_thread' : record .thread ,
38
58
u'sys_threadname' : self ._decode (record .threadName ),
39
- u'message' : self ._decode (self ._format_message (record . msg , record . args ))
59
+ u'message' : self ._decode (self .format (record ))
40
60
}
41
61
return data
42
62
@@ -70,15 +90,6 @@ def _asciidecode(self, value):
70
90
else :
71
91
return self ._asciidecode (str (value ))
72
92
73
- def _format_message (self , msg , args ):
74
- if isinstance (msg , basestring ):
75
- if args :
76
- return msg % args
77
- else :
78
- return msg
79
- else :
80
- return msg
81
-
82
93
def _format_exception (self , exc_info ):
83
94
if exc_info is not None and exc_info [0 ] is not None :
84
95
return {
@@ -89,28 +100,4 @@ def _format_exception(self, exc_info):
89
100
else :
90
101
return None
91
102
92
- class FluentHandler (logging .Handler ):
93
- '''
94
- Logging Handler for fluent.
95
- '''
96
- def __init__ (self ,
97
- tag ,
98
- host = 'localhost' ,
99
- port = 24224 ,
100
- timeout = 3.0 ,
101
- verbose = False ):
102
-
103
- self .tag = tag
104
- self .sender = sender .FluentSender (tag ,
105
- host = host , port = port ,
106
- timeout = timeout , verbose = verbose )
107
- self .fmt = FluentRecordFormatter ()
108
- logging .Handler .__init__ (self )
109
-
110
- def emit (self , record ):
111
- if record .levelno < self .level : return
112
- data = self .fmt .format (record )
113
- self .sender .emit_with_time (None , record .created , data )
114
103
115
- def _close (self ):
116
- self .sender ._close ()
0 commit comments