Configuration¶
Global Configuration¶
ctxlog uses a global configuration that can be customized using the configure function:
import ctxlog
from ctxlog import LogLevel, ConsoleHandler, FileHandler, FileRotation
# Configure with default console handler
ctxlog.configure(
level=LogLevel.INFO,
timefmt="iso", # or "%Y-%m-%d %H:%M:%S"
utc=True,
)
# Configure with custom handlers
ctxlog.configure(
level=LogLevel.INFO,
handlers=[
ConsoleHandler(
level=LogLevel.INFO,
serialize=False, # Human-readable format
color=True,
use_stderr=False,
),
FileHandler(
level=LogLevel.DEBUG, # More verbose in file
serialize=True, # JSON format
file_path="./app.log",
rotation=FileRotation(
size="20MB", # Rotate when file reaches 20MB
keep=5, # Keep 5 rotated files
compression="gzip", # Compress old files
),
),
],
)
Configuration Parameters¶
level¶
The global log level threshold. Logs below this level will not be emitted.
# Using enum
level=ctxlog.LogLevel.INFO
# Using string
level="info"
# Using integer
level=20
Available log levels:
DEBUG(10)INFO(20)WARNING(30)ERROR(40)CRITICAL(50)
timefmt¶
The timestamp format for log entries:
# ISO8601 format (default)
timefmt="iso"
# Custom strftime format
timefmt="%Y-%m-%d %H:%M:%S"
utc¶
Whether to use UTC for timestamps:
# Use UTC (default: False)
utc=True
# Use local time
utc=False
handlers¶
A list of output handlers. If not provided, a default ConsoleHandler is used:
from ctxlog import ConsoleHandler, FileHandler
handlers=[
ConsoleHandler(),
FileHandler(file_path="./app.log"),
]
Console Handler¶
The ConsoleHandler outputs logs to the console (stdout/stderr):
from ctxlog import ConsoleHandler, LogLevel
ConsoleHandler(
level=LogLevel.INFO, # Handler-specific level (optional)
serialize=False, # Whether to output as JSON
color=True, # Whether to use colored output
use_stderr=False, # Whether to use stderr for all logs
)
File Handler¶
The FileHandler outputs logs to a file:
from ctxlog import FileHandler, FileRotation, LogLevel
FileHandler(
level=LogLevel.DEBUG, # Handler-specific level (optional)
serialize=True, # Whether to output as JSON
file_path="./app.log", # Path to the log file
rotation=None, # File rotation configuration (optional)
)
File Rotation¶
The FileRotation class configures log file rotation:
from ctxlog import FileRotation
# Size-based rotation
rotation=FileRotation(
size="20MB", # Rotate when file reaches this size
keep=5, # Keep this many rotated files
compression="gzip", # Compress old files (gzip or zip)
)
# Time-based rotation
rotation=FileRotation(
time="00.00", # Rotate at this time (HH.MM)
keep=5, # Keep this many rotated files
compression="gzip", # Compress old files (gzip or zip)
)
Multiple Handlers¶
You can configure multiple handlers with different levels and formats:
import ctxlog
from ctxlog import ConsoleHandler, FileHandler, FileRotation, LogLevel
ctxlog.configure(
level=LogLevel.INFO,
handlers=[
ConsoleHandler(
level=LogLevel.INFO,
serialize=False, # Human-readable format
color=True,
use_stderr=False,
),
FileHandler(
level=LogLevel.DEBUG, # More verbose in file
serialize=True, # JSON format
file_path="./app.log",
rotation=FileRotation(
size="20MB", # Rotate when file reaches 20MB
keep=5, # Keep 5 rotated files
compression="gzip", # Compress old files
),
),
],
)