3 stable releases
1.0.2 | Oct 27, 2024 |
---|---|
1.0.1 | Aug 19, 2024 |
1.0.0 | Aug 18, 2024 |
#314 in Debugging
249 downloads per month
33KB
859 lines
HTrace
A tracing class.
HTrace, aim to generate simple, human-readable, tracing lines into different modules. Usable for realtime application, script, api or website. Work as a service (singleton)
Htrace contains 2 default modules : (you can write your own module easily )
- File : write trace into file (write a file by day or by hour, by thread name, by source file, etc)
- CommandLine : write trace into stdout (with coloration)
list of trace level : (in order)
- Type::DEBUG : debugging trace (for developpement) - LOWER LEVEL
- Type::DEBUGERR : debugging trace for a error
- Type::NORMAL : normal trace
- Type::NOTICE : important trace for the remaining of trace
- Type::NOTICEDERR => trace of an error, but who have been noticed to somebody (mail by example)
- Type::WARNING => trace that need to be checked
- Type::ERROR : trace of an error or something that blocks
- Type::FATAL : trace who lead into panic - HIGHER LEVEL
Configuration of htrace and each module is saved into configuration dir (via Hconfig), into "Htrace.json"
Online Documentation
Example
Note: the crate is using Hconfig for configuration
fn main()
{
// configuration path, the directory need to be existing or created before continuing
HConfigManager::singleton().setConfPath("./config");
// Adding modules into Htrace, default configuration is used if there is no configuration file, or missing part.
HTracer::appendModule("cmd", CommandLine::CommandLine::new(CommandLineConfig::default())).expect("Cannot append module");
HTracer::appendModule("file", File::File::new(FileConfig::default())).expect("Cannot append module");
// settings
HTracer::threadSetName("testThreadName"); // default thread, can be call for each thread
HTracer::minlvl_default(Type::DEBUG);
// simple trace of variable
let string_test = "machin".to_string();
HTrace!(string_test);
// trace with auto format
HTrace!("test macro {}",87);
// trace with return line
HTrace!("test macro\nlmsdkhfsldf\nmsdf\nhjsdf");
// trace different level (ERROR level and above show backtrace)
HTrace!((Type::NOTICE) "my trace");
HTrace!((Type::ERROR) 21);
HTrace!((Type::ERROR) "test macro {}",87);
// macro for consuming Result, and tracing the error, default to ERROR (ERROR level and above show backtrace)
let testerror = std::fs::File::open(Path::new("idontexist.muahahah"));
HTraceError!((Type::FATAL) "File error is : {}",testerror);
HTracer::drop(); // cannot be put in "Drop" because of OnceCell
}
you can also check tests.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~6–12MB
~154K SLoC