浏览代码

added feature to configure the log level when initializing the simple logger

Håvar Nøvik 10 年之前
父节点
当前提交
9c62e40f35
共有 1 个文件被更改,包括 16 次插入7 次删除
  1. 16 7
      src/lib.rs

+ 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)
+}