1- # -*- coding: utf-8 -*-
2-
1+ import json
32import logging
43import socket
5- import sys
6-
7- try :
8- import simplejson as json
9- except ImportError : # pragma: no cover
10- import json
114
125from fluent import sender
136
147
15- class FluentRecordFormatter (logging .Formatter , object ):
16- """ A structured formatter for Fluent.
8+ class FluentRecordFormatter (logging .Formatter ):
9+ """A structured formatter for Fluent.
1710
1811 Best used with server storing data in an ElasticSearch cluster for example.
1912
@@ -33,36 +26,49 @@ class FluentRecordFormatter(logging.Formatter, object):
3326 Can be an iterable.
3427 """
3528
36- def __init__ (self , fmt = None , datefmt = None , style = '%' , fill_missing_fmt_key = False , format_json = True ,
37- exclude_attrs = None ):
38- super (FluentRecordFormatter , self ).__init__ (None , datefmt )
39-
40- if sys .version_info [0 :2 ] >= (3 , 2 ) and style != '%' :
29+ def __init__ (
30+ self ,
31+ fmt = None ,
32+ datefmt = None ,
33+ style = "%" ,
34+ fill_missing_fmt_key = False ,
35+ format_json = True ,
36+ exclude_attrs = None ,
37+ ):
38+ super ().__init__ (None , datefmt )
39+
40+ if style != "%" :
4141 self .__style , basic_fmt_dict = {
42- '{' : (logging .StrFormatStyle , {
43- 'sys_host' : '{hostname}' ,
44- 'sys_name' : '{name}' ,
45- 'sys_module' : '{module}' ,
46- }),
47- '$' : (logging .StringTemplateStyle , {
48- 'sys_host' : '${hostname}' ,
49- 'sys_name' : '${name}' ,
50- 'sys_module' : '${module}' ,
51- }),
42+ "{" : (
43+ logging .StrFormatStyle ,
44+ {
45+ "sys_host" : "{hostname}" ,
46+ "sys_name" : "{name}" ,
47+ "sys_module" : "{module}" ,
48+ },
49+ ),
50+ "$" : (
51+ logging .StringTemplateStyle ,
52+ {
53+ "sys_host" : "${hostname}" ,
54+ "sys_name" : "${name}" ,
55+ "sys_module" : "${module}" ,
56+ },
57+ ),
5258 }[style ]
5359 else :
5460 self .__style = None
5561 basic_fmt_dict = {
56- ' sys_host' : ' %(hostname)s' ,
57- ' sys_name' : ' %(name)s' ,
58- ' sys_module' : ' %(module)s' ,
62+ " sys_host" : " %(hostname)s" ,
63+ " sys_name" : " %(name)s" ,
64+ " sys_module" : " %(module)s" ,
5965 }
6066
6167 if exclude_attrs is not None :
6268 self ._exc_attrs = set (exclude_attrs )
6369 self ._fmt_dict = None
6470 self ._formatter = self ._format_by_exclusion
65- self .usesTime = super (FluentRecordFormatter , self ).usesTime
71+ self .usesTime = super ().usesTime
6672 else :
6773 self ._exc_attrs = None
6874 if not fmt :
@@ -89,7 +95,7 @@ def __init__(self, fmt=None, datefmt=None, style='%', fill_missing_fmt_key=False
8995
9096 def format (self , record ):
9197 # Compute attributes handled by parent class.
92- super (FluentRecordFormatter , self ).format (record )
98+ super ().format (record )
9399 # Add ours
94100 record .hostname = self .hostname
95101
@@ -103,7 +109,7 @@ def usesTime(self):
103109 """This method is substituted on construction based on settings for performance reasons"""
104110
105111 def _structuring (self , data , record ):
106- """ Melds `msg` into `data`.
112+ """Melds `msg` into `data`.
107113
108114 :param data: dictionary to be sent to fluent server
109115 :param msg: :class:`LogRecord`'s message to add to `data`.
@@ -118,7 +124,7 @@ def _structuring(self, data, record):
118124 elif isinstance (msg , str ):
119125 self ._add_dic (data , self ._format_msg (record , msg ))
120126 else :
121- self ._add_dic (data , {' message' : msg })
127+ self ._add_dic (data , {" message" : msg })
122128
123129 def _format_msg_json (self , record , msg ):
124130 try :
@@ -131,7 +137,7 @@ def _format_msg_json(self, record, msg):
131137 return self ._format_msg_default (record , msg )
132138
133139 def _format_msg_default (self , record , msg ):
134- return {' message' : super (FluentRecordFormatter , self ).format (record )}
140+ return {" message" : super ().format (record )}
135141
136142 def _format_by_exclusion (self , record ):
137143 data = {}
@@ -175,17 +181,18 @@ class FluentHandler(logging.Handler):
175181 Logging Handler for fluent.
176182 """
177183
178- def __init__ (self ,
179- tag ,
180- host = 'localhost' ,
181- port = 24224 ,
182- timeout = 3.0 ,
183- verbose = False ,
184- buffer_overflow_handler = None ,
185- msgpack_kwargs = None ,
186- nanosecond_precision = False ,
187- ** kwargs ):
188-
184+ def __init__ (
185+ self ,
186+ tag ,
187+ host = "localhost" ,
188+ port = 24224 ,
189+ timeout = 3.0 ,
190+ verbose = False ,
191+ buffer_overflow_handler = None ,
192+ msgpack_kwargs = None ,
193+ nanosecond_precision = False ,
194+ ** kwargs ,
195+ ):
189196 self .tag = tag
190197 self ._host = host
191198 self ._port = port
@@ -213,37 +220,53 @@ def sender(self):
213220 buffer_overflow_handler = self ._buffer_overflow_handler ,
214221 msgpack_kwargs = self ._msgpack_kwargs ,
215222 nanosecond_precision = self ._nanosecond_precision ,
216- ** self ._kwargs
223+ ** self ._kwargs ,
217224 )
218225 return self ._sender
219226
220- def getSenderInstance (self , tag , host , port , timeout , verbose ,
221- buffer_overflow_handler , msgpack_kwargs ,
222- nanosecond_precision , ** kwargs ):
227+ def getSenderInstance (
228+ self ,
229+ tag ,
230+ host ,
231+ port ,
232+ timeout ,
233+ verbose ,
234+ buffer_overflow_handler ,
235+ msgpack_kwargs ,
236+ nanosecond_precision ,
237+ ** kwargs ,
238+ ):
223239 sender_class = self .getSenderClass ()
224- return sender_class (tag ,
225- host = host , port = port ,
226- timeout = timeout , verbose = verbose ,
227- buffer_overflow_handler = buffer_overflow_handler ,
228- msgpack_kwargs = msgpack_kwargs ,
229- nanosecond_precision = nanosecond_precision , ** kwargs )
240+ return sender_class (
241+ tag ,
242+ host = host ,
243+ port = port ,
244+ timeout = timeout ,
245+ verbose = verbose ,
246+ buffer_overflow_handler = buffer_overflow_handler ,
247+ msgpack_kwargs = msgpack_kwargs ,
248+ nanosecond_precision = nanosecond_precision ,
249+ ** kwargs ,
250+ )
230251
231252 def emit (self , record ):
232253 data = self .format (record )
233254 _sender = self .sender
234- return _sender .emit_with_time (None ,
235- sender .EventTime (record .created )
236- if _sender .nanosecond_precision
237- else int (record .created ),
238- data )
255+ return _sender .emit_with_time (
256+ None ,
257+ sender .EventTime (record .created )
258+ if _sender .nanosecond_precision
259+ else int (record .created ),
260+ data ,
261+ )
239262
240263 def close (self ):
241264 self .acquire ()
242265 try :
243266 try :
244267 self .sender .close ()
245268 finally :
246- super (FluentHandler , self ).close ()
269+ super ().close ()
247270 finally :
248271 self .release ()
249272
0 commit comments