Skip to content

Commit 9b37dee

Browse files
committed
Add support for exc_traceback
1 parent 5082d68 commit 9b37dee

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

fluent/handler.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import logging
44
import socket
5+
import traceback
56

67
try:
78
import simplejson as json
@@ -16,6 +17,10 @@ class FluentRecordFormatter(logging.Formatter, object):
1617
1718
Best used with server storing data in an ElasticSearch cluster for example.
1819
20+
Supports an extra `exc_traceback` format argument that represents a
21+
traceback when logging an exception as return by
22+
:meth:`traceback.extract_tb`.
23+
1924
:param fmt: a dict with format string as values to map to provided keys.
2025
"""
2126
def __init__(self, fmt=None, datefmt=None):
@@ -37,9 +42,17 @@ def format(self, record):
3742
super(FluentRecordFormatter, self).format(record)
3843
# Add ours
3944
record.hostname = self.hostname
45+
4046
# Apply format
41-
data = dict([(key, value % record.__dict__)
42-
for key, value in self._fmt_dict.items()])
47+
data = {}
48+
for key, value in self._fmt_dict.items():
49+
if value.find('%(exc_traceback)') >= 0:
50+
if record.exc_info:
51+
data[key] = traceback.extract_tb(record.exc_info[2])
52+
else:
53+
data[key] = None
54+
else:
55+
data[key] = value % record.__dict__
4356

4457
self._structuring(data, record.msg)
4558
return data

0 commit comments

Comments
 (0)