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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63d356c62332e57d325152f9a2a8982cf0f3bdfaf83d7ad34d8a4022849f7406
|
|
| MD5 |
75e8f56cfef436bb9ad41a4b836cbc05
|
|
| BLAKE2b-256 |
d69f95926512f44737a4a422e8ba098f3b79d80fe6f859b0a73a4c93eed86526
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b552a60a22c77cf12de5ad0c45fea3dbc6705b88e767fbb64d25bd70e60d807
|
|
| MD5 |
a66067efe65ef39f1f23187717cbc0c0
|
|
| BLAKE2b-256 |
74da71d8fd5b0d9e1258ae236eb0144246f686cf21421c6659678d96853c4081
|