diff --git a/src/log_watcher.rs b/src/log_watcher.rs index d453560..9c2b2d0 100644 --- a/src/log_watcher.rs +++ b/src/log_watcher.rs @@ -20,6 +20,12 @@ struct LogFileInfo<'a> { pub label: &'a String, } +impl<'a> LogFileInfo<'a> { + fn get_label_set(&self) -> (&'static str, String) { + return ("file", self.label.clone()); + } +} + pub async fn watch_logs_task(access_log_files: Vec<LogFilePath>, error_log_files: Vec<LogFilePath>, metrics: ApacheMetrics, shutdown_send: UnboundedSender<()>) { if let Err(error) = watch_logs(access_log_files, error_log_files, metrics).await { println!("[LogWatcher] Error reading logs: {}", error); @@ -58,6 +64,12 @@ impl<'a> LogWatcher<'a> { println!("[LogWatcher] Watching {} access log file(s) and {} error log file(s).", self.count_files_of_kind(LogFileKind::Access), self.count_files_of_kind(LogFileKind::Error)); + for metadata in self.files.values() { + let label_set = metadata.get_label_set(); + let _ = metrics.requests_total.get_or_create(&label_set); + let _ = metrics.errors_total.get_or_create(&label_set); + } + loop { if let Some(event) = self.reader.next_line().await? { self.handle_line(event, metrics); @@ -75,7 +87,7 @@ impl<'a> LogWatcher<'a> { }; println!("[LogWatcher] Received {} line from \"{}\": {}", kind, label, event.line()); - family.get_or_create(&("file", label.clone())).inc(); + family.get_or_create(&metadata.get_label_set()).inc(); } None => { println!("[LogWatcher] Received line from unknown file: {}", event.source().display());