(tags: Option<HashMap<String, String>>)
| 280 | |
| 281 | impl Log { |
| 282 | pub fn create(tags: Option<HashMap<String, String>>) -> Logger { |
| 283 | let tags = tags.unwrap_or_default(); |
| 284 | |
| 285 | if let Some(service) = tags.get("service") { |
| 286 | if let Ok(loggers) = LOGGERS.lock() { |
| 287 | if let Some(cached) = loggers.get(service) { |
| 288 | return Logger { |
| 289 | tags: cached.tags.clone(), |
| 290 | level: cached.level, |
| 291 | writer: Arc::clone(&cached.writer), |
| 292 | }; |
| 293 | } |
| 294 | } |
| 295 | } |
| 296 | |
| 297 | let writer: Arc<Mutex<Box<dyn Write + Send>>> = |
| 298 | Arc::new(Mutex::new(Box::new(std::io::stderr()))); |
| 299 | let logger = Logger::new(tags.clone(), Arc::clone(&writer)); |
| 300 | |
| 301 | if let Some(service) = tags.get("service") { |
| 302 | if let Ok(mut loggers) = LOGGERS.lock() { |
| 303 | loggers.insert( |
| 304 | service.to_string(), |
| 305 | CachedLogger { |
| 306 | tags: tags.clone(), |
| 307 | level: logger.level, |
| 308 | writer: Arc::clone(&writer), |
| 309 | }, |
| 310 | ); |
| 311 | } |
| 312 | } |
| 313 | |
| 314 | logger |
| 315 | } |
| 316 | |
| 317 | pub fn default() -> Logger { |
| 318 | let mut tags = HashMap::new(); |
no test coverage detected