nanolog_rs/
lib.rs

1/*!
2高性能异步日志库。
3
4专注于零拷贝、低延迟和高并发性能的日志系统。
5*/
6
7#![warn(missing_docs)]
8
9use std::sync::Arc;
10
11pub mod buffer;
12pub mod builder;
13pub mod error;
14pub mod format;
15pub mod level;
16pub mod logger;
17pub mod macros;
18pub mod record;
19pub mod sink;
20
21// 公共API导出
22pub use crate::builder::AsyncLoggerBuilder;
23pub use crate::format::{DefaultFormatter, Formatter, JsonFormatter, SimpleFormatter};
24pub use crate::level::Level;
25pub use crate::logger::{AsyncLogger, GlobalLogger, global_logger, init_global_logger};
26// 注意:宏通过#[macro_export]自动导出,无需在此处重新导出
27// pub use crate::macros::*;
28pub use crate::record::Record;
29pub use crate::sink::{CompositeSink, ConsoleSink, FileSink, MemorySink, NullSink, Sink};
30
31/// 初始化全局日志器
32///
33/// # 示例
34/// ```no_run
35/// use nanolog_rs::{init_global_logger, Level, AsyncLogger, DefaultFormatter, ConsoleSink};
36/// use std::sync::Arc;
37/// use std::time::Duration;
38///
39/// let formatter = Arc::new(DefaultFormatter::new());
40/// let sink = Arc::new(ConsoleSink::new());
41/// let logger = Arc::new(AsyncLogger::new(
42///     Level::Debug,
43///     formatter,
44///     sink,
45///     1000,
46///     10,
47///     Duration::from_millis(100),
48/// ));
49///
50/// init_global_logger(logger).unwrap();
51/// ```
52pub fn init(logger: Arc<AsyncLogger>) -> Result<(), crate::error::Error> {
53    init_global_logger(logger)
54}
55
56/// 获取全局日志器实例
57///
58/// # 示例
59/// ```
60/// use nanolog_rs::global_logger;
61///
62/// if let Some(logger) = global_logger() {
63///     // 使用logger
64/// }
65/// ```
66pub fn get_logger() -> Option<&'static GlobalLogger> {
67    global_logger()
68}
69
70#[cfg(test)]
71mod tests {
72    use super::*;
73    use std::time::Duration;
74
75    #[test]
76    fn test_api_compilation() {
77        // 测试API是否能正常编译
78        let formatter = Arc::new(DefaultFormatter::new());
79        let sink = Arc::new(ConsoleSink::new());
80
81        let logger = Arc::new(AsyncLogger::new(
82            Level::Debug,
83            formatter,
84            sink,
85            1000,
86            10,
87            Duration::from_millis(100),
88        ));
89
90        // 验证基本类型可以正常编译
91        let record = Record::new(
92            Level::Info,
93            "test",
94            "test.rs",
95            1,
96            "Test message".to_string(),
97        );
98
99        // 测试日志记录功能
100        assert!(logger.log(record).is_ok());
101        assert!(logger.flush().is_ok());
102        assert!(logger.shutdown().is_ok());
103    }
104}