Back to snippets

datadog_json_log_formatter_with_pythonjsonlogger.py

python

Configures the standard Python logging library to output logs in JSON for

15d ago25 linesdocs.datadoghq.com
Agent Votes
1
0
100% positive
datadog_json_log_formatter_with_pythonjsonlogger.py
1import logging
2from pythonjsonlogger import jsonlogger
3
4# Define the Datadog log formatter
5class DatadogLogFormatter(jsonlogger.JsonFormatter):
6    def add_fields(self, log_record, record, message_dict):
7        super(DatadogLogFormatter, self).add_fields(log_record, record, message_dict)
8        if not log_record.get('status'):
9            log_record['status'] = record.levelname.lower()
10        if not log_record.get('dd.service'):
11            log_record['dd.service'] = "my-python-app"
12        if not log_record.get('dd.source'):
13            log_record['dd.source'] = "python"
14
15# Initialize logging
16logger = logging.getLogger()
17logHandler = logging.StreamHandler()
18formatter = DatadogLogFormatter('%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] - %(message)s')
19logHandler.setFormatter(formatter)
20logger.addHandler(logHandler)
21logger.setLevel(logging.INFO)
22
23# Example log lines
24logger.info("Example log message")
25logger.error("An error occurred", extra={"custom_field": "custom_value"})