Skip to content

Commit 1cde07a

Browse files
committed
Add compatibility with regular (non structured) logging usage
Part of #8.
1 parent 130be83 commit 1cde07a

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

fluent/handler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ def _structuring(self, data, msg):
5656
try:
5757
self._add_dic(data, json.loads(str(msg)))
5858
except ValueError:
59-
pass
59+
self._add_dic(data, {'message': msg})
60+
else:
61+
self._add_dic(data, {'message': msg})
6062

6163
@staticmethod
6264
def _add_dic(data, dic):

tests/test_handler.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,44 @@ def test_custom_fmt(self):
6464
self.assertTrue('name' in data[0][2])
6565
self.assertEqual('fluent.test', data[0][2]['name'])
6666
self.assertTrue('lineno' in data[0][2])
67+
68+
def test_unstructured_message(self):
69+
handler = fluent.handler.FluentHandler('app.follow', port=self._port)
70+
71+
logging.basicConfig(level=logging.INFO)
72+
log = logging.getLogger('fluent.test')
73+
handler.setFormatter(fluent.handler.FluentRecordFormatter())
74+
log.addHandler(handler)
75+
log.info('hello world')
76+
handler.close()
77+
78+
data = self.get_data()
79+
self.assertTrue('message' in data[0][2])
80+
self.assertEqual('hello world', data[0][2]['message'])
81+
82+
def test_non_string_simple_message(self):
83+
handler = fluent.handler.FluentHandler('app.follow', port=self._port)
84+
85+
logging.basicConfig(level=logging.INFO)
86+
log = logging.getLogger('fluent.test')
87+
handler.setFormatter(fluent.handler.FluentRecordFormatter())
88+
log.addHandler(handler)
89+
log.info(42)
90+
handler.close()
91+
92+
data = self.get_data()
93+
self.assertTrue('message' in data[0][2])
94+
95+
def test_non_string_dict_message(self):
96+
handler = fluent.handler.FluentHandler('app.follow', port=self._port)
97+
98+
logging.basicConfig(level=logging.INFO)
99+
log = logging.getLogger('fluent.test')
100+
handler.setFormatter(fluent.handler.FluentRecordFormatter())
101+
log.addHandler(handler)
102+
log.info({42: 'root'})
103+
handler.close()
104+
105+
data = self.get_data()
106+
# For some reason, non-string keys are ignored
107+
self.assertFalse(42 in data[0][2])

0 commit comments

Comments
 (0)