Usage Guide⚓
Configuration⚓
Logger Initialization⚓
from lifecyclelogging import Logging
logger = Logging(
enable_console=True, # Enable console output
enable_file=True, # Enable file output
logger_name="myapp", # Custom logger name
log_file_name="app.log", # Custom log file name
default_storage_marker="app", # Default marker for storing messages
enable_verbose_output=True, # Enable verbose logging
verbosity_threshold=2, # Set verbosity level (1-5)
allowed_levels=["info", "warning"], # Only store these levels
denied_levels=["debug"] # Don't store these levels
)
Log Levels⚓
Available log levels:
logger.logged_statement("Debug info", log_level="debug")
logger.logged_statement("General info", log_level="info")
logger.logged_statement("Warning message", log_level="warning")
logger.logged_statement("Error occurred", log_level="error")
logger.logged_statement("Critical failure", log_level="critical")
Message Storage⚓
Context Markers⚓
Prefix messages with context:
logger.logged_statement(
"Starting process",
context_marker="STARTUP",
log_level="info"
)
# Output: [STARTUP] Starting process
Storage Markers⚓
Store messages for later retrieval:
logger.logged_statement(
"Database connected",
storage_marker="DB",
log_level="info"
)
# Access stored messages
db_messages = logger.stored_messages["DB"]
JSON Data⚓
Unlabeled JSON⚓
logger.logged_statement(
"API request",
json_data={
"method": "POST",
"endpoint": "/users",
"status": 200
},
log_level="info"
)
Labeled JSON⚓
logger.logged_statement(
"Request/Response",
labeled_json_data={
"request": {"method": "GET", "url": "/api/v1/users"},
"response": {"status": 200, "count": 5}
},
log_level="info"
)
Verbosity Control⚓
Basic Control⚓
# Will be logged only if enable_verbose_output=True
logger.logged_statement(
"Detailed info",
verbose=True,
log_level="debug"
)
Verbosity Levels⚓
# Configure verbosity
logger = Logging(
enable_verbose_output=True,
verbosity_threshold=2 # Accept messages with verbosity <= 2
)
# Will be logged (verbosity <= threshold)
logger.logged_statement(
"Medium detail",
verbose=True,
verbosity=2,
log_level="debug"
)
# Won't be logged (verbosity > threshold)
logger.logged_statement(
"High detail",
verbose=True,
verbosity=3,
log_level="debug"
)
Verbosity Bypass⚓
# Add marker to bypass list
logger.verbosity_bypass_markers.append("IMPORTANT")
# Will be logged regardless of verbosity settings
logger.logged_statement(
"Critical info",
context_marker="IMPORTANT",
verbose=True,
verbosity=5,
log_level="debug"
)
Environment Variables⚓
The following environment variables are supported:
LOG_LEVEL
: Set the default log levelLOG_FILE_NAME
: Set the log file nameOVERRIDE_TO_CONSOLE
: Force console output (True/False)OVERRIDE_TO_FILE
: Force file output (True/False)
Best Practices⚓
Log Level Selection - Use “debug” for detailed troubleshooting - Use “info” for general operational events - Use “warning” for potentially harmful situations - Use “error” for error events that might still allow the application to continue - Use “critical” for critical errors that prevent program execution
Structured Data - Use json_data for single objects - Use labeled_json_data for multiple related objects - Keep data structures clean and readable
Markers - Use consistent naming conventions - Group related functionality - Consider hierarchical markers (e.g., “database.query”, “database.connection”)
Performance - Use appropriate verbosity levels - Consider log rotation for file outputs - Monitor log file sizes