Skip to content

ton5169/serilog-python

Repository files navigation

Serilog Python

Structured JSON logging for Python applications, compatible with Serilog format.

Installation

pip install serilog-python

Quick Start

import logging
from serilog_python import setup_logging

# Basic setup
setup_logging()

logger = logging.getLogger(__name__)
logger.info("Application started", extra={"user_id": 123, "action": "login"})

Configuration

Environment Variables

export APPLICATION_NAME="MyService"
export APPLICATION_VERSION="1.2.3"
export ENVIRONMENT="production"

Custom Configuration

setup_logging(
    level="DEBUG",
    application_name="MyApp",
    application_version="2.1.0",
    environment="production",
    exclude_fields=["password", "token"]
)

Framework Integration

FastAPI

from fastapi import FastAPI
from serilog_python import setup_logging

setup_logging(level="INFO", disable_access_logs=True)
app = FastAPI()

@app.get("/users/{user_id}")
async def get_user(user_id: int):
    logger = logging.getLogger(__name__)
    logger.info("Fetching user", extra={"user_id": user_id})
    return {"user_id": user_id}

Django

# settings.py
from serilog_python import setup_logging

setup_logging(
    application_name="MyDjangoApp",
    environment="production"
)

Flask

from flask import Flask
from serilog_python import setup_logging

setup_logging(application_name="MyFlaskApp")
app = Flask(__name__)

Log Format

Logs are output in JSON format:

{
  "@timestamp": "2024-01-15T10:30:45.123Z",
  "level": "Information",
  "message": "User logged in",
  "service": {
    "name": "MyService",
    "version": "1.2.3"
  },
  "environment": "production",
  "user_id": 123,
  "action": "login"
}

API Reference

setup_logging()

Configure the entire logging system.

Parameters:

  • level (str): Logging level (default: "INFO")
  • disable_access_logs (bool): Disable web server access logs (default: True)
  • sql_level (str): SQL logging level (optional)
  • application_name (str): Override application name (optional)
  • application_version (str): Override application version (optional)
  • environment (str): Override environment (optional)
  • exclude_fields (list): Fields to exclude from logs (optional)

ContextFilter

Filter that adds service and environment context to log records.

SerilogLikeJSONFormatter

JSON formatter compatible with Serilog output format.

License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published