Skip to main content

A python logger similar to Go's slogger

Project description

SLogger

SLogger is a structured logger inspired by Go's slog, designed to simplify logging with key-value pairs in Python. It supports both plain text and JSON formats, with context fields being logged as top-level keys such as username and request_id.

Installation

Install SLogger via pip:

pip install roadsync_slogger

Basic Usage

SLogger logs messages along with additional context in a flat structure. Here's an example using the JSON format:

JSON Logging Example

import logging
from roadsync_slogger import SLogger

# Set up base logger
base_logger = logging.getLogger("example")
base_logger.setLevel(logging.DEBUG)

# Create SLogger instance with JSON format
logger = SLogger(base_logger, format="json")

# Add initial context with username
logger = logger.with_fields(username="johndoe")

# Log a message with initial context
logger.info("User initialized session", request_id="abc123")
# Log output:
# {
#   "message": "User initialized session",
#   "username": "johndoe",
#   "request_id": "abc123"
# }

Using .with_fields()

The .with_fields() method allows you to persist fields across multiple log calls. Each call to .with_fields() returns a new SLogger instance with the added fields, leaving the original context unchanged.

Example:

# Adding fields using .with_fields()
logger = logger.with_fields(username="johndoe", request_id="abc123")

# Logging with the updated context
logger.info("Performed a profile update", action="update_profile")
# Log output:
# {
#   "message": "Performed a profile update",
#   "username": "johndoe",
#   "request_id": "abc123",
#   "action": "update_profile"
# }

Adding Context

You can continue adding fields with subsequent calls to .with_fields(), merging new context with existing fields. This allows for flexibility when extending the log context.

Example with Added Context:

# Initial logger with username field
logger = logger.with_fields(username="johndoe")

# Adding more context with action and request_id
logger = logger.with_fields(action="login", request_id="def456")
logger.info("Login successful")
# Log output:
# {
#   "message": "Login successful",
#   "username": "johndoe",
#   "request_id": "def456",
#   "action": "login"
# }

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roadsync_slogger-1.0.4.tar.gz (2.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roadsync_slogger-1.0.4-py3-none-any.whl (3.1 kB view details)

Uploaded Python 3

File details

Details for the file roadsync_slogger-1.0.4.tar.gz.

File metadata

  • Download URL: roadsync_slogger-1.0.4.tar.gz
  • Upload date:
  • Size: 2.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/5.15.154+

File hashes

Hashes for roadsync_slogger-1.0.4.tar.gz
Algorithm Hash digest
SHA256 63d356c62332e57d325152f9a2a8982cf0f3bdfaf83d7ad34d8a4022849f7406
MD5 75e8f56cfef436bb9ad41a4b836cbc05
BLAKE2b-256 d69f95926512f44737a4a422e8ba098f3b79d80fe6f859b0a73a4c93eed86526

See more details on using hashes here.

File details

Details for the file roadsync_slogger-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: roadsync_slogger-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 3.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/5.15.154+

File hashes

Hashes for roadsync_slogger-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5b552a60a22c77cf12de5ad0c45fea3dbc6705b88e767fbb64d25bd70e60d807
MD5 a66067efe65ef39f1f23187717cbc0c0
BLAKE2b-256 74da71d8fd5b0d9e1258ae236eb0144246f686cf21421c6659678d96853c4081

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page