1 个不稳定版本
0.1.0 | 2021年2月20日 |
---|
#1037 in 异步
用于 peshming
6KB
async-anyhow-logger
async-anyhow-logger
是一个crate,可以轻松记录在异步函数中发生的错误,例如通过 tokio::spawn
示例
use anyhow::{Context, Result};
use async_anyhow_logger::catch_context;
pub async fn erroring_async_function() -> Result<()> {
Err(std::io::Error::new(std::io::ErrorKind::Other, "Oh no! An error!").into())
}
pub async fn multi_erroring_async_function() -> Result<()> {
erroring_async_function()
.await
.context("Oh no! Another error!")
}
#[tokio::main]
async fn main() {
pretty_env_logger::init();
tokio::spawn(catch_context(
"my async function errored",
erroring_async_function(),
));
tokio::spawn(catch_context(
"more complicated async function errored",
multi_erroring_async_function(),
));
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
}
此示例还位于 examples/basic.rs,可以使用 cargo run --example basic
运行。
许可证
根据您的选择,受Apache License, Version 2.0或MIT许可证的许可。
除非您明确声明,否则您有意提交以包含在此crate中的任何贡献,根据Apache-2.0许可证定义,应如上所述双重许可,没有任何附加条款或条件。
依赖项
~0.8–1MB
~19K SLoC