Skip to content

Commit 7b1a26d

Browse files
T0MASDRH-Docs
authored andcommitted
convert 'None' and '' string values to NoneType before forwarding them to fluentd
1 parent 1c69535 commit 7b1a26d

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

fluent/handler.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,10 @@ def _structuring(self, data, record):
120120
self._add_dic(data, {'message': msg})
121121

122122
@staticmethod
123-
def _add_dic(data, dic):
123+
def _add_dic(data, dic, nonevalues=['None','']):
124124
for key, value in dic.items():
125125
if isinstance(key, basestring):
126-
data[str(key)] = value
126+
data[str(key)] = None if value in nonevalues else value
127127

128128

129129
class FluentHandler(logging.Handler):

tests/test_handler.py

+22
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,28 @@ def test_custom_field_fill_missing_fmt_key_is_true(self):
151151
# field defaults to none if not in log record
152152
self.assertIsNone(data[0][2]['custom_field'])
153153

154+
def test_custom_field_convert_none_strings(self):
155+
handler = fluent.handler.FluentHandler('app.follow', port=self._port)
156+
157+
logging.basicConfig(level=logging.INFO)
158+
log = logging.getLogger('fluent.test')
159+
handler.setFormatter(
160+
fluent.handler.FluentRecordFormatter(fmt={
161+
'name': '%(name)s',
162+
}
163+
)
164+
)
165+
log.addHandler(handler)
166+
log.info({'name': 'None', 'sample':''})
167+
log.removeHandler(handler)
168+
handler.close()
169+
170+
data = self.get_data()
171+
# field should be none
172+
self.assertIsNone(data[0][2]['name'])
173+
self.assertIsNone(data[0][2]['sample'])
174+
175+
154176
def test_json_encoded_message(self):
155177
handler = fluent.handler.FluentHandler('app.follow', port=self._port)
156178

0 commit comments

Comments
 (0)