Skip to content

Commit e0acfb7

Browse files
authored
Merge pull request #3 from alekitto/main
Expose method to build logger without registering in log crate
2 parents 384661f + 0d0dccd commit e0acfb7

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/lib.rs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,23 @@ impl Builder {
175175
cfg
176176
}
177177

178+
/// Builds the logger without registering it in the [`log`] crate.
179+
///
180+
/// Unlike [`Builder::init`] and [`Builder::try_init`] this does not register
181+
/// the logger into the [`log`] system, allowing it to be combined with
182+
/// other logging crates.
183+
pub fn build(self) -> impl log::Log {
184+
Logger {
185+
filter: self.filter,
186+
default_writer: self.default_writer,
187+
writers: self
188+
.writers
189+
.into_iter()
190+
.map(|(t, w)| (InnerTarget::from(t), w))
191+
.collect(),
192+
}
193+
}
194+
178195
/// Initialize the logger for [`log`] crate.
179196
///
180197
/// See the [crate level documentation] for more.
@@ -198,17 +215,11 @@ impl Builder {
198215
/// [`init`]: fn.init.html
199216
/// [crate level documentation]: index.html
200217
pub fn try_init(self) -> Result<(), SetLoggerError> {
201-
let logger = Box::new(Logger {
202-
filter: self.filter,
203-
default_writer: self.default_writer,
204-
writers: self
205-
.writers
206-
.into_iter()
207-
.map(|(t, w)| (InnerTarget::from(t), w))
208-
.collect(),
209-
});
218+
let filter = self.filter;
219+
let logger = Box::new(self.build());
220+
210221
log::set_boxed_logger(logger)?;
211-
log::set_max_level(self.filter);
222+
log::set_max_level(filter);
212223

213224
#[cfg(feature = "log-panic")]
214225
std::panic::set_hook(Box::new(log_panic));

0 commit comments

Comments
 (0)