diff options
Diffstat (limited to 'testing/web-platform/tests/tools/third_party/websockets/example/logging/json_log_formatter.py')
-rw-r--r-- | testing/web-platform/tests/tools/third_party/websockets/example/logging/json_log_formatter.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/third_party/websockets/example/logging/json_log_formatter.py b/testing/web-platform/tests/tools/third_party/websockets/example/logging/json_log_formatter.py new file mode 100644 index 0000000000..b8fc8d6dc9 --- /dev/null +++ b/testing/web-platform/tests/tools/third_party/websockets/example/logging/json_log_formatter.py @@ -0,0 +1,33 @@ +import json +import logging +import datetime + +class JSONFormatter(logging.Formatter): + """ + Render logs as JSON. + + To add details to a log record, store them in a ``event_data`` + custom attribute. This dict is merged into the event. + + """ + def __init__(self): + pass # override logging.Formatter constructor + + def format(self, record): + event = { + "timestamp": self.getTimestamp(record.created), + "message": record.getMessage(), + "level": record.levelname, + "logger": record.name, + } + event_data = getattr(record, "event_data", None) + if event_data: + event.update(event_data) + if record.exc_info: + event["exc_info"] = self.formatException(record.exc_info) + if record.stack_info: + event["stack_info"] = self.formatStack(record.stack_info) + return json.dumps(event) + + def getTimestamp(self, created): + return datetime.datetime.utcfromtimestamp(created).isoformat() |