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; /// 定义 crate::Result pub type Result = std::result::Result; /// 创建一个 `tokio` 异步运行时,可用于在同步函数中 block 调用异步方法,例: /// /// ```no_run /// let rt = ccutils::async_runtime()?; /// /// rt.block_on(async { /// println!("Run as Async"); /// }) /// ``` pub fn async_runtime() -> crate::Result { 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() }