ccutils/src/lib.rs
Jia Chao 0d56cda3b3 ccutils::cmd::IsOk 处理 Command 的结果和输出
Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
2024-08-26 15:09:11 +08:00

67 lines
1.9 KiB
Rust

use tokio::runtime::Runtime;
use tracing_subscriber::{fmt, EnvFilter};
/// linux 下的 cmd 命令执行处理函数
pub mod cmd;
/// 放置了一些基础的函数集合
pub mod util;
/// 包含了一些常用的文件操作函数
pub mod file;
/// 重新导出 tracing 中常用的日志宏,以及 tracing_subscriber 里的格式化和环境过滤器
pub mod tracing;
/// 定义 crate::Error
/// 大部分函数返回的错误
pub type Error = Box<dyn std::error::Error + Send + Sync>;
/// 定义 crate::Result
pub type Result<T> = std::result::Result<T, Error>;
/// 创建一个 `tokio` 异步运行时,可用于在同步函数中 block 调用异步方法,例:
///
/// ```no_run
/// let rt = ccutils::async_runtime()?;
///
/// rt.block_on(async {
/// println!("Run as Async");
/// })
/// ```
pub fn async_runtime() -> crate::Result<Runtime> {
Ok(Runtime::new()?)
}
/// 设置日志记录配置。
///
/// 该函数配置日志记录格式、时间戳、行号和环境过滤器。
/// 使用 `tracing` 和 `tracing_subscriber` 库进行日志记录设置。
///
/// # 返回值
/// 该函数返回一个 `Result` 类型,如果日志记录设置成功则为 `Ok(())`,如果发生错误则返回错误信息。
///
/// # 错误
/// 如果日志记录初始化失败,该函数会返回一个错误。
///
/// # 示例
/// ```rust
/// set_up_logging()?;
/// ```
pub fn set_up_logging() -> crate::Result<()> {
// 配置日志格式化器
fmt()
// 禁用 ANSI 转义序列(颜色)
.with_ansi(false)
// 设置时间戳格式为 RFC 3339
.with_timer(fmt::time::OffsetTime::local_rfc_3339().unwrap())
// 启用行号
.with_line_number(true)
// 使用环境变量过滤日志级别
.with_env_filter(
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")),
)
// 尝试初始化日志记录
.try_init()
}