Introduction to JSON Logger
The json-logger is a powerful tool that streamlines application logging using JSON format. Its structured logging approach enhances log readability, searchability, and processing. Below, we explore a variety of APIs provided by json-logger with practical examples.
Key APIs of JSON Logger
1. Basic Configuration
Initialize the logger with basic configurations:
import logging
from pythonjsonlogger import jsonlogger
logger = logging.getLogger()
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)
logger.info('Basic configuration complete', extra={'key': 'value'})
2. Customizing Log Format
Customize the output format:
formatter = jsonlogger.JsonFormatter('%(asctime)s %(name)s %(levelname)s %(message)s')
logHandler.setFormatter(formatter)
logger.info('Customizing log format')
3. Adding Extra Fields
Include additional fields in the JSON logs:
logger.info('Logging with extra fields', extra={'user': 'john_doe', 'status': 'success'})
4. Configuring with a JSON Config File
Setup logger using configurations from a JSON file:
import json
with open('logging.json', 'r') as file:
config = json.load(file)
logging.config.dictConfig(config)
logger = logging.getLogger('exampleLogger')
logger.info('Logger configured from JSON file')
Application Example with JSON Logger
Let’s integrate json-logger in a sample application:
import logging
from pythonjsonlogger import jsonlogger
import requests
class WebApp:
def __init__(self):
self.logger = logging.getLogger('webAppLogger')
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
self.logger.addHandler(logHandler)
self.logger.setLevel(logging.INFO)
def fetch_data(self, url):
self.logger.info('Fetching data', extra={'url': url})
try:
response = requests.get(url)
response.raise_for_status()
self.logger.info('Data fetched successfully', extra={'status': response.status_code})
return response.json()
except requests.exceptions.RequestException as e:
self.logger.error('Failed to fetch data', extra={'error': str(e)})
return None
if __name__ == "__main__":
app = WebApp()
url = 'https://api.example.com/data'
data = app.fetch_data(url)
This setup utilizes json-logger for maintaining structured logs, making debugging and monitoring more efficient.
Hash: 8a3ed69848a093808c32c3fd2f9bdd3e92e641f9467d4f2a149c8dead2f5b730