Overview of the Log Module
The Log module provides structured logging capabilities, supporting various log levels, colored output, and thread-safe level management. All functions support pipeline operations and provide a unified error handling mechanism.
Function Overview
| Function Category | Main Functions | Purpose |
|---|---|---|
| Log Level Management | set_level, get_level, disable, enabled |
Control log output levels |
| Logging | info, warn, debug, error, trace |
Log output at different levels |
| Raw Output | echo |
Direct output without formatting |
| Level Constants | level.none, level.error, level.warn, level.info, level.debug, level.trace |
Log level constants |
Log Level Constants
The Log module provides a complete set of log level constants:
level - Log level constant mapping
- Includes:
none(0),error(1),warn(2),info(3),debug(4),trace(5) - Example:
Log.set_level Log.level.debug
# Set log level to DEBUG
Log.set_level 3
# Directly set to INFO level using a number
Log Level Management Functions
These functions are used to control the log output level:
set_level <level> - Set the log level
- Parameters:
level(required):Integer- Log level (0-5) - Returns:
None - Example:
Log.set_level Log.level.warn
# Only show WARN and above level logs
Log.set_level 1
# Only show ERROR level logs
get_level - Get the current log level
- Parameters: None
- Returns:
Integer- Current log level - Example:
Log.get_level
# Returns: 3 (default INFO level)
let current_level = Log.get_level
disable - Disable all log output
- Parameters: None
- Returns:
None - Example:
Log.disable
# Disable all log output
Log.info "This message will not be displayed"
enabled <level> - Check if the specified level is enabled
- Parameters:
level(required):Integer- Log level to check - Returns:
Boolean- Whether the level is enabled - Example:
Log.enabled Log.level.debug
# Returns: true/false
if (Log.enabled 4) { Log.debug "Debug information" }
Logging Functions
These functions are used to output log messages at different levels:
info <message>... - Log an info level message
- Parameters:
message(required):Any- Message to log (supports multiple parameters) - Returns:
None - Color: Green
[INFO]prefix - Example:
Log.info "Application started successfully"
# Output: [INFO] Application started successfully
Log.info "User" $username "logged in successfully"
# Output: [INFO] User alice logged in successfully
warn <message>... - Log a warning level message
- Parameters:
message(required):Any- Message to log (supports multiple parameters) - Returns:
None - Color: Yellow
[WARN]prefix - Example:
Log.warn "Disk space is low"
# Output: [WARN] Disk space is low
Log.warn "Configuration file" $config_file "does not exist, using default configuration"
debug <message>... - Log a debug level message
- Parameters:
message(required):Any- Message to log (supports multiple parameters) - Returns:
None - Color: Blue
[DEBUG]prefix - Example:
Log.debug "Processing request" $request_id
# Output: [DEBUG] Processing request req-12345
Log.debug "Variable value:" $var
error <message>... - Log an error level message
- Parameters:
message(required):Any- Message to log (supports multiple parameters) - Returns:
None - Color: Red
[ERROR]prefix - Example:
Log.error "Database connection failed"
# Output: [ERROR] Database connection failed
Log.error "File" $filename "read failed:" $error_msg
trace <message>... - Log a trace level message
- Parameters:
message(required):Any- Message to log (supports multiple parameters) - Returns:
None - Color: Magenta
[TRACE]prefix - Example:
Log.trace "Entering function process_data"
# Output: [TRACE] Entering function process_data
Log.trace "Iteration number" $i
Raw Output Functions
echo <message>... - Output without formatting
- Parameters:
message(required):Any- Message to output (supports multiple parameters) - Returns:
None - Example:
Log.echo "Plain text output, no level prefix"
# Output: Plain text output, no level prefix
Log.echo "Value1" "Value2" "Value3"
# Output: Value1 Value2 Value3
Multi-line Output Support
The Log module supports formatted output for multi-line messages:
Example:
Log.info "Multi-line message:\nFirst line\nSecond line\nThird line" |
Rules:
- The first line displays a colored label.
- Subsequent lines are indented to align with the label length.
- A newline character is automatically appended at the end.
Notes
The Log module is an important component of the Lumesh built-in module system, registered as “Log” in the module registry. This module provides a complete logging solution, supporting colored output, level control, and multi-line formatting. The default log level is INFO (3), which can be dynamically adjusted using the set_level function.
Note: Color effects should be viewed in a terminal that supports ANSI.