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}