Skip to content

Patching

Inject fields or transform records globally or per-sink.

Global Patcher

python
from logly import logger

def add_service(record):
    record["extra"]["service"] = "auth-api"
    record["extra"]["env"] = "production"

logger.add("app.log", patch=add_service)
logger.info("Patched with service info")
logger.complete()

Per-Sink Patcher

python
from logly import logger

def enrich_record(record):
    record["extra"]["version"] = "2.3.1"
    record["extra"]["region"] = "eu-west-1"

# Only this sink gets the patch
sink_id = logger.add("enriched.log", patch=enrich_record)
logger.info("Only enriched.log has extra fields")
logger.complete()
logger.remove(sink_id)

Modify Existing Fields

python
from logly import logger

def uppercase_messages(record):
    record["message"] = record["message"].upper()

logger.add("upper.log", patch=uppercase_messages)
logger.info("this message will be uppercased")
logger.complete()

Use patching for enrichment

Patchers are ideal for adding deployment version, environment, hostname, or trace IDs to every record.

Released under the MIT License.