|
2 | 2 |
|
3 | 3 | use std::env;
|
4 | 4 |
|
5 |
| -use anyhow::{Error, Result}; |
6 | 5 | use colored::{control::set_override, Colorize};
|
7 | 6 | use log::{Level, LevelFilter, Metadata, Record};
|
8 | 7 |
|
@@ -46,30 +45,35 @@ impl log::Log for SimpleLogger {
|
46 | 45 | /// A function to initialize the private `LOGGER`.
|
47 | 46 | ///
|
48 | 47 | /// The logging level defaults to [`LevelFilter::Info`].
|
49 |
| -/// Returns a [`SetLoggerError`](struct@log::SetLoggerError) if the `LOGGER` is already initialized. |
50 |
| -pub fn init() -> Result<()> { |
| 48 | +/// This logs a debug message about [`SetLoggerError`](struct@log::SetLoggerError) |
| 49 | +/// if the `LOGGER` is already initialized. |
| 50 | +pub fn try_init() { |
51 | 51 | let logger: SimpleLogger = SimpleLogger;
|
52 | 52 | if matches!(
|
53 | 53 | env::var("CPP_LINTER_COLOR").as_deref(),
|
54 | 54 | Ok("on" | "1" | "true")
|
55 | 55 | ) {
|
56 | 56 | set_override(true);
|
57 | 57 | }
|
58 |
| - log::set_boxed_logger(Box::new(logger)) |
59 |
| - .map(|()| log::set_max_level(LevelFilter::Info)) |
60 |
| - .map_err(Error::from) |
| 58 | + if let Err(e) = |
| 59 | + log::set_boxed_logger(Box::new(logger)).map(|()| log::set_max_level(LevelFilter::Info)) |
| 60 | + { |
| 61 | + // logger singleton already instantiated. |
| 62 | + // we'll just use whatever the current config is. |
| 63 | + log::debug!("{e:?}"); |
| 64 | + } |
61 | 65 | }
|
62 | 66 |
|
63 | 67 | #[cfg(test)]
|
64 | 68 | mod test {
|
65 | 69 | use std::env;
|
66 | 70 |
|
67 |
| - use super::{init, SimpleLogger}; |
| 71 | + use super::{try_init, SimpleLogger}; |
68 | 72 |
|
69 | 73 | #[test]
|
70 | 74 | fn trace_log() {
|
71 | 75 | env::set_var("CPP_LINTER_COLOR", "true");
|
72 |
| - init().unwrap_or(()); |
| 76 | + try_init(); |
73 | 77 | assert!(SimpleLogger::level_color(&log::Level::Trace).contains("TRACE"));
|
74 | 78 | log::set_max_level(log::LevelFilter::Trace);
|
75 | 79 | log::trace!("A dummy log statement for code coverage");
|
|
0 commit comments