mirror of
https://github.com/torlando-tech/columba.git
synced 2025-12-23 22:20:18 +00:00
137 lines
3.8 KiB
Python
137 lines
3.8 KiB
Python
"""
|
|
Standardized logging utilities for Python code in the Columba project.
|
|
|
|
Logging Format: Columba:Python:ClassName: method(): message
|
|
|
|
This provides consistent, easily grep-able log output across all Python components,
|
|
matching the format used in Kotlin code (Columba:Kotlin:ClassName).
|
|
|
|
Usage:
|
|
from logging_utils import log_debug, log_info, log_error
|
|
|
|
class ReticulumWrapper:
|
|
def initialize(self, config_json: str):
|
|
log_info("ReticulumWrapper", "initialize", "Starting initialization")
|
|
log_debug("ReticulumWrapper", "initialize", f"Config length: {len(config_json)}")
|
|
|
|
Grep patterns for filtering Columba Python logs:
|
|
|
|
All Columba Python logs:
|
|
adb logcat | grep "Columba:Python:"
|
|
|
|
Specific component:
|
|
adb logcat | grep "Columba:Python:ReticulumWrapper"
|
|
|
|
All Columba logs (Kotlin + Python):
|
|
adb logcat | grep "Columba:"
|
|
|
|
With method context:
|
|
adb logcat | grep "Columba:Python:ReticulumWrapper" | grep "initialize()"
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
|
|
def columba_tag(class_name: str) -> str:
|
|
"""
|
|
Generate standardized Columba log TAG for a Python class.
|
|
|
|
Args:
|
|
class_name: Simple class name (e.g., "ReticulumWrapper")
|
|
|
|
Returns:
|
|
Standardized TAG string: "Columba:Python:ClassName"
|
|
"""
|
|
return f"Columba:Python:{class_name}"
|
|
|
|
|
|
def _format_message(class_name: str, method_name: str, message: str, level: Optional[str] = None) -> str:
|
|
"""
|
|
Format a standardized log message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Log message
|
|
level: Optional log level (DEBUG, INFO, WARNING, ERROR)
|
|
|
|
Returns:
|
|
Formatted message: "Columba:Python:ClassName: method(): [LEVEL] message"
|
|
"""
|
|
tag = columba_tag(class_name)
|
|
level_prefix = f"[{level}] " if level else ""
|
|
return f"{tag}: {method_name}(): {level_prefix}{message}"
|
|
|
|
|
|
def log_debug(class_name: str, method_name: str, message: str):
|
|
"""
|
|
Log a DEBUG level message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Debug message
|
|
"""
|
|
print(_format_message(class_name, method_name, message, "DEBUG"))
|
|
|
|
|
|
def log_info(class_name: str, method_name: str, message: str):
|
|
"""
|
|
Log an INFO level message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Info message
|
|
"""
|
|
print(_format_message(class_name, method_name, message, "INFO"))
|
|
|
|
|
|
def log_warning(class_name: str, method_name: str, message: str):
|
|
"""
|
|
Log a WARNING level message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Warning message
|
|
"""
|
|
print(_format_message(class_name, method_name, message, "WARNING"))
|
|
|
|
|
|
def log_error(class_name: str, method_name: str, message: str):
|
|
"""
|
|
Log an ERROR level message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Error message
|
|
"""
|
|
print(_format_message(class_name, method_name, message, "ERROR"))
|
|
|
|
|
|
def log_critical(class_name: str, method_name: str, message: str):
|
|
"""
|
|
Log a CRITICAL level message.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
message: Critical message
|
|
"""
|
|
print(_format_message(class_name, method_name, message, "CRITICAL"))
|
|
|
|
|
|
def log_separator(class_name: str, method_name: str, char: str = "=", length: int = 60):
|
|
"""
|
|
Log a separator line for visual organization.
|
|
|
|
Args:
|
|
class_name: Name of the class
|
|
method_name: Name of the method
|
|
char: Character to use for separator (default: "=")
|
|
length: Length of separator line (default: 60)
|
|
"""
|
|
print(_format_message(class_name, method_name, char * length))
|