Expand description
§captains-log
A light-weight logger for rust, implementation base on the crate log.
§Features
-
Allow customize log format and time format.
-
Supports signal listening for log-rotate.
-
Supports multiple log files, each with its own log level.
-
Supports hook on panic.
-
On default supports multi-process/thread/coroutine log into the same file. Atomic line appending can be done on Linux
-
Provides
LogFilterfor coroutine-based programs. You can set req_id in LogFilter and output to log files -
For test suits usage:
Allow dynamic reconfigure logger setting in different test function. (NOTE: currently signal_listener does not support reconfigure).
Provides an attribute macro #[logfn] to wrap test function. Logging test-start and test-end.
§Dependency
[dependencies]
log = { version = "0.4", features = ["std", "kv_unstable"] }
captains_log = "0.1"§Fast setup eample:
/// #[macro_use]
/// extern crate captains_log;
/// #[macro_use]
/// extern crate log;
use log::{debug, info, error};
use captains_log::*;
use captains_log::recipe::split_error_file_logger;
let log_builder = split_error_file_logger("/tmp", "test", log::Level::Debug);
setup_log(log_builder);
// non-error msg will only appear in /tmp/test.log
debug!("Set a course to Sol system");
info!("Engage");
// will appear in both /tmp/test.log and /tmp/test.log.wf
error!("Engine over heat!");
§Customize format example
extern crate signal_hook;
extern crate chrono;
use captains_log::*;
fn format_f(r: FormatRecord) -> String {
let time = r.time();
let level = r.level();
let file = r.file();
let line = r.line();
let msg = r.msg();
format!("{time}|{level}|{file}:{line}|{msg}\n").to_string()
}
let debug_format = LogFormat::new(
"%Y%m%d %H:%M:%S%.6f",
format_f,
);
let debug_file = LogFile::new(
"/tmp", "test.log", log::Level::Trace, debug_format);
let config = Builder::default()
.signal(signal_hook::consts::SIGINT)
.file(debug_file);
setup_log(config);Modules§
Macros§
- do_
log_ filter - log_
assert - log_
assert_ eq - log_
debug_ assert - log_
debug_ assert_ eq - log_
println - logger_
assert - logger_
assert_ eq - logger_
debug - logger_
debug_ assert - logger_
debug_ assert_ eq - logger_
error - logger_
info - logger_
trace - logger_
warn
Structs§
- Builder
- Global config to setup logger See crate::recipe for usage
- Format
Record - LogFile
- Config for file sink
- LogFilter
- A LogFilter supports concurrent control the log level. Use in combine with macros logger_XXX
- LogFormat
- Custom formatter which adds into a log sink
Enums§
- LogLevel
- An enum representing the available verbosity levels of the logger.
- LogLevel
Filter - An enum representing the available verbosity level filters of the logger.
Functions§
- setup_
log - Initialize global logger from Builder
Attribute Macros§
- logfn
- Logs the result of the function it’s above.