2 个稳定版本
1.0.1 | 2023年7月10日 |
---|---|
1.0.0 | 2023年6月27日 |
#657 在 配置 中
在 apecast 中使用
9KB
72 行
wixet-bootstrap
首先,这个库只有在您使用 tokio
且您的应用程序以异步方式运行时才有意义。
一些代码每次都会使用。对于 Wixet 来说,这个库就是这样。如果所有应用程序都有共同点,那就是启动过程。对于简单的程序或 "hello world",这很简单,但随着您的应用程序的增长,您总是会以某种方式实现它。
此库提供了一种简单但实用的最小启动过程
- 使用 fern 配置日志记录器(格式和写入文件的选项)
- 友好的退出和中断处理程序(ctr+c...)使用 signal-hook
如何使用它
看看这个简单的例子
use wixet_bootstrap::init;
use log::info;
#[tokio::main]
async fn main() {
info!("This log line will be ignored because the logger is not configured yet");
let (closer, exit) = init(Some("output.log"), None, None).await?; //If you provide None, it simple will not write a log file (just output)
info!("Hello to my application!")
// Do may awesome stuff spawing tokio tasks
// I use select here because it is common to listen for multiple signals, but you can just await the `exit` if not
tokio::select!{
_ = exit.recv_async() => {
info!("Shutdown process started");
// Do your friendly stop process here
// This code is run when ctrl+c or any other kill interrupt is received
}
};
// A friendly shutdown by deinitializing all "init" stuff.
closer.stop().await?;
info!("Bye");
}
正如您所看到的,它非常简单且易于使用,但它节省了很多代码行。最重要的是,如果我们添加了新的功能/改进,它将适用于所有项目。
我希望保持这个库尽可能简单和通用,但如果您有想添加的有趣内容,我将很高兴听到它!
额外配置
默认日志级别
如果您不提供任何日志级别,将使用 info。要设置自己的偏好,请这样做
let (closer, exit) = init(Some("output.log"), Some(log::LevelFilter::Warn), None).await?;
其他模块的日志级别
如果您想设置默认日志级别但只更改某些模块的级别,您可以在哈希表中提供它们
let (closer, exit) = init(Some("output.log"), None, None).await?;
依赖关系
~5–14MB
~156K SLoC