mf_state/lib.rs
1//! ModuForge-RS 状态管理模块
2//!
3//! 该模块负责管理应用程序的状态,包括:
4//! - 状态管理
5//! - 事务处理
6//! - 资源管理
7//! - 插件系统
8//! - 日志系统
9//!
10//! 主要组件:
11//! - `error`: 错误类型和处理
12//! - `gotham_state`: Gotham 状态管理
13//! - `logging`: 日志系统
14//! - `ops`: 操作定义
15//! - `plugin`: 插件系统
16//! - `resource`: 资源管理
17//! - `resource_table`: 资源表
18//! - `state`: 状态管理
19//! - `transaction`: 事务处理
20//!
21//! 核心类型:
22//! - `State`: 状态管理
23//! - `StateConfig`: 状态配置
24//! - `Configuration`: 配置管理
25//! - `Transaction`: 事务处理
26
27pub mod error;
28pub mod gotham_state;
29pub mod logging;
30pub mod ops;
31pub mod plugin;
32pub mod resource;
33pub mod resource_table;
34pub mod state;
35pub mod transaction;
36pub use state::{State, StateConfig, Configuration};
37pub use transaction::Transaction;
38pub use tracing::{info, debug, warn, error};
39/// 初始化日志系统
40///
41/// # 参数
42/// * `level` - 日志级别,可选值:
43/// - trace: 最详细的跟踪信息
44/// - debug: 调试信息
45/// - info: 一般信息
46/// - warn: 警告信息
47/// - error: 错误信息
48/// * `file_path` - 日志文件路径,如果为 None 则只输出到控制台
49///
50/// # 示例
51/// ```
52/// use mf_core::init_logging;
53///
54/// // 只输出到控制台
55/// init_logging("debug", None)?;
56///
57/// // 同时输出到文件和控制台
58/// init_logging("info", Some("logs/moduforge.log"))?;
59/// ```
60pub fn init_logging(
61 level: &str,
62 file_path: Option<&str>,
63) -> anyhow::Result<()> {
64 use std::path::PathBuf;
65
66 let level = match level.to_lowercase().as_str() {
67 "trace" => tracing::Level::TRACE,
68 "debug" => tracing::Level::DEBUG,
69 "info" => tracing::Level::INFO,
70 "warn" => tracing::Level::WARN,
71 "error" => tracing::Level::ERROR,
72 _ => tracing::Level::INFO,
73 };
74
75 let file_path = file_path.map(PathBuf::from);
76 logging::init_logging(Some(level), file_path)
77}