use log
Logging module - structured logging with levels and rotation.
Provides: - Log levels: Debug, Info, Warn, Error - Structured key-value logging - Multiple outputs (stdout, files) - Log rotation (by size, daily, hourly) - Text and JSON formats
Example
use log
fn main() {
// Create logger
log::new! -> logger
// Basic logging
logger "server started" log::info
logger "connection failed" log::error
// Set minimum level
logger log::LevelWarn log::set_level
// Add file output with rotation
logger "/var/log/app.log" log::RotateDaily 0 7 log::add_file_rotate!
// Structured logging with key-value pairs
logger "user login" "user" "alice" "ip" "192.168.1.1" 2 log::info_kv
// JSON format
logger log::FormatJson log::set_format
// Cleanup
logger log::free
}
Constants
| Name | Value | Description |
|---|---|---|
ErrAlloc |
2 |
Error: Memory allocation failed. |
ErrFile |
3 |
Error: File operation failed. |
ErrInvalid |
4 |
Error: Invalid argument. |
FormatJson |
1 |
Output format: JSON lines. |
FormatText |
0 |
Output format: human-readable text. |
LevelDebug |
0 |
Log level: Debug (most verbose). |
LevelError |
3 |
Log level: Error (errors only). |
LevelInfo |
1 |
Log level: Info (normal messages). |
LevelOff |
4 |
Log level: Off (no logging). |
LevelWarn |
2 |
Log level: Warn (warnings). |
RotateDaily |
2 |
Rotation mode: rotate daily. |
RotateHourly |
3 |
Rotation mode: rotate hourly. |
RotateNone |
0 |
Rotation mode: no rotation. |
RotateSize |
1 |
Rotation mode: rotate by file size. |
Logger
Logger handle.
Struct
| Field | Type | Description |
|---|---|---|
handle |
ptr |
Constructors
fn new
Create a new logger. By default logs to stdout at Info level in text format.
Signature: ( -- logger:Logger)!
| Output | Type | Description |
|---|---|---|
logger |
Logger |
New logger handle |
Example:
log::new! // logger
Methods
fn add_file
Add file output (no rotation).
Signature: (logger:Logger) add_file(path:str -- )!
| Parameter | Type | Description |
|---|---|---|
path |
str |
Log file path |
| Error | Description |
|---|---|
log::ErrFile |
Failed to open file |
Example:
logger "/var/log/app.log" log::add_file!
fn add_file_rotate
Add file output with rotation.
Signature: (logger:Logger) add_file_rotate(path:str mode:i64 max_size:i64 max_files:i64 -- )!
| Parameter | Type | Description |
|---|---|---|
path |
str |
Base log file path |
mode |
i64 |
Rotation mode (RotateNone, RotateSize, RotateDaily, RotateHourly) |
max_size |
i64 |
Max file size for RotateSize (bytes), 0 for time-based |
max_files |
i64 |
Max rotated files to keep (0 = unlimited) |
| Error | Description |
|---|---|
log::ErrFile |
Failed to open file |
Example:
logger "/var/log/app.log" log::RotateDaily 0 7 log::add_file_rotate!
fn check_rotate
Check and perform rotation if needed. Called automatically before each log, but can be called manually.
Signature: (logger:Logger) check_rotate()
Example:
logger log::check_rotate
fn debug
Log a debug message.
Signature: (logger:Logger) debug(msg:str -- )
| Parameter | Type | Description |
|---|---|---|
msg |
str |
Message to log |
Example:
logger "processing item" log::debug
fn disable_stdout
Disable stdout output.
Signature: (logger:Logger) disable_stdout()
Example:
logger log::disable_stdout
fn enable_stdout
Enable stdout output (default).
Signature: (logger:Logger) enable_stdout()
Example:
logger log::enable_stdout
fn error
Log an error message.
Signature: (logger:Logger) error(msg:str -- )
| Parameter | Type | Description |
|---|---|---|
msg |
str |
Message to log |
Example:
logger "connection failed" log::error
fn flush
Flush all outputs.
Signature: (logger:Logger) flush()
Example:
logger log::flush
fn free
Free logger resources.
Signature: (logger:Logger) free()
Example:
logger log::free
fn get_level
Get current log level.
Signature: (logger:Logger) get_level( -- level:i64)
| Output | Type | Description |
|---|---|---|
level |
i64 |
Current minimum level |
Example:
logger log::get_level // level
fn info
Log an info message.
Signature: (logger:Logger) info(msg:str -- )
| Parameter | Type | Description |
|---|---|---|
msg |
str |
Message to log |
Example:
logger "server started" log::info
fn log
Log a message at specified level.
Signature: (logger:Logger) log(level:i64 msg:str -- )
| Parameter | Type | Description |
|---|---|---|
level |
i64 |
Log level |
msg |
str |
Message to log |
Example:
logger log::LevelInfo "custom message" log::log
fn set_format
Set output format.
Signature: (logger:Logger) set_format(format:i64 -- )
| Parameter | Type | Description |
|---|---|---|
format |
i64 |
Format (FormatText or FormatJson) |
Example:
logger log::FormatJson log::set_format
fn set_level
Set minimum log level. Messages below this level are ignored.
Signature: (logger:Logger) set_level(level:i64 -- )
| Parameter | Type | Description |
|---|---|---|
level |
i64 |
Minimum level (LevelDebug, LevelInfo, LevelWarn, LevelError, LevelOff) |
Example:
logger log::LevelWarn log::set_level
fn warn
Log a warning message.
Signature: (logger:Logger) warn(msg:str -- )
| Parameter | Type | Description |
|---|---|---|
msg |
str |
Message to log |
Example:
logger "connection timeout" log::warn