π¬ A couple of functions to make logging in Rust easier.
# Cargo.toml
[dependencies]
rust_logging = "1.1.0"
use rust_logging::*;
fn main() {
// With default settings
let default_logger = Logger::new();
// With custom settings
let settings = LoggerOptions {
error_icon: "π₯", // the icon for errors
warn_icon: "β οΈ", // the icon for warnings
info_icon: "βΉοΈ", // the icon for info
success_icon: "β
", // the icon for success
icon_connector: "=>", // the connector between the icon and the message
log_file: "log.txt", // the file to log to when logging to a file
highlight: true, // highlight text after ":" in the message
..Default::default() // the default values for the non specified settings
};
let custom_logger = settings.get_logger();
}
This code provides the following functions:
- π‘ warn(): Prints a warning message.
- π΄ error(): Prints an error message.
- π΅ info(): Prints an information message.
- π’ success(): Prints a success message.
- βΉοΈ Add a
f
before the function name to print the message to the log file
Each function takes a single parameter, which is the message to be printed.
logger.error("a command failed : hello");
logger.info("executing command : hello");
logger.warn("a command is about to fail : hello");
logger.success("a command succeeded : hello");
By default, the text after the colon is highlighted.
This can be disabled by setting the highlight
field to false
inside the custom settings.
let settings = LoggerOptions {
highlight: false,
..Default::default()
};
let logger = settings.get_logger();
By default, the icon and the message are separated by an arrow ->
You can change this by setting the icon_connector
field to something else.
let settings = LoggerOptions {
icon_connector: "=>",
..Default::default()
}
let logger = settings.get_logger();
By default, the following icons are used:
Icon | Function |
---|---|
[ x ] | error() |
[ i ] | info() |
[ v ] | success() |
[ ! ] | warn() |
You can change this by setting the following fields inside the custom settings:
let settings = LoggerOptions {
error_icon: "π₯",
warn_icon: "β οΈ",
info_icon: "βΉοΈ",
success_icon: "β
",
..Default::default()
};
let logger = settings.get_logger();
You can change the colors of the messages by setting the colors
field inside the custom settings.
The value must be a rust_logging::Colors
struct.
let my_colors = Colors {
// \x1b is the escape character (ASCII 27) and [xxm is the color 'code'
red: "\x1b[93m", // escape sequence for yellow foreground
bg_red: "\x1b[42m", // escape sequence for green background
..Default::default()
};
let settings = LoggerOptions {
colors: my_colors,
..Default::default()
};
let logger = settings.get_logger();
logger.error("a command failed : hello");
You can specify the log file path to write the messages to with the log_file
field.
Use the f
prefix before the function name to print the message to the log file.
let settings = LoggerOptions {
log_file: "myProgram.log",
..Default::default()
}
let logger = settings.get_logger();
// -----------------------------
logger.fwarning("This is a : warning message");
logger.fsuccess("This is a : success message");
logger.finfo("This is an : information message");
logger.ferror("This is an : error message");
You can set environment variable LOG
to print
to also log to the terminal when logging to a file.
LOG=print [program]
#########
# PROGRAM SOURCE CODE #
# ferror("This is an : error message");
#########
[Terminal output] :
[ x ] -> This is an : error message
#########
# LOGFILE CONTENT #
# [ x ] -> This is an : error message
#########
If you have any problem, don't hesitate to open an issue
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.