瀏覽代碼

Merge pull request #1 from havarnov/configurable_log_level

Configurable log level
Sam Clements 10 年之前
父節點
當前提交
df2f22a53b
共有 2 個文件被更改,包括 29 次插入7 次删除
  1. 13 0
      examples/configure_log_level_example.rs
  2. 16 7
      src/lib.rs

+ 13 - 0
examples/configure_log_level_example.rs

@@ -0,0 +1,13 @@
+#[macro_use]
+extern crate log;
+extern crate simple_logger;
+
+use log::LogLevel;
+
+fn main() {
+    simple_logger::init_with_level(LogLevel::Warn).unwrap();
+
+    warn!("This will be logged.");
+    info!("This will NOT be logged.");
+}
+

+ 16 - 7
src/lib.rs

@@ -3,13 +3,15 @@
 extern crate log;
 extern crate time;
 
-use log::{Log,LogLevel,LogLevelFilter,LogMetadata,LogRecord,SetLoggerError};
+use log::{Log,LogLevel,LogMetadata,LogRecord,SetLoggerError};
 
-struct SimpleLogger;
+struct SimpleLogger {
+    log_level: LogLevel,
+}
 
 impl Log for SimpleLogger {
     fn enabled(&self, metadata: &LogMetadata) -> bool {
-        metadata.level() <= LogLevel::Trace
+        metadata.level() <= self.log_level
     }
 
     fn log(&self, record: &LogRecord) {
@@ -24,10 +26,17 @@ impl Log for SimpleLogger {
     }
 }
 
-/// Initializes the global logger with a SimpleLogger instance
-pub fn init() -> Result<(), SetLoggerError> {
+/// Initializes the global logger with a SimpleLogger instance with `max_log_level` set to
+/// the specified log level.
+pub fn init_with_level(log_level: LogLevel) -> Result<(), SetLoggerError> {
     log::set_logger(|max_log_level| {
-        max_log_level.set(LogLevelFilter::Trace);
-        return Box::new(SimpleLogger);
+        max_log_level.set(log_level.to_log_level_filter());
+        return Box::new(SimpleLogger { log_level: log_level });
     })
 }
+
+/// Initializes the global logger with a SimpleLogger instance with `max_log_level` set to
+/// `LogLevel::Trace`.
+pub fn init() -> Result<(), SetLoggerError> {
+    init_with_level(LogLevel::Trace)
+}