better searching distrinct logs

This commit is contained in:
Robin Appelman 2025-08-21 00:04:14 +02:00
commit f1d53dea58
3 changed files with 16 additions and 7 deletions

View file

@ -1,3 +1,4 @@
use crate::grouping::{GroupingResult, UniqueGrouping};
use crate::logfile::{LogFile, LogLine, LogLineNumber};
use crate::logs::ParsedLogs;
use crate::timegraph::{SparkLine, TimeGraph};
@ -91,9 +92,7 @@ impl<'logs> LineSet<'logs> {
if line.request_id == filter.filter {
return true;
}
filter
.parts()
.all(|filter_part| filter_part.is_match(&line.message))
UniqueGrouping { line }.matches(filter)
}
pub fn iter<'a>(&'a self) -> impl Iterator<Item = &'logs LogLine<'logs>> + use<'a, 'logs> {

View file

@ -28,9 +28,14 @@ impl<'a> GroupingResult<'a> for UniqueGrouping<'a> {
if filter.is_empty() {
return true;
}
filter
.parts()
.all(|filter_part| filter_part.is_match(&self.line.message))
filter.parts().all(|filter_part| {
if let Some(ex) = self.line.exception.as_ref() {
if filter_part.is_match(&ex.message) || filter_part.is_match(&ex.exception) {
return true;
}
}
filter_part.is_match(&self.line.message)
})
}
fn render(&self) -> impl Iterator<Item = Cow<'a, str>> {

View file

@ -196,8 +196,13 @@ impl<'a> LogLine<'a> {
if filter.is_empty() {
return true;
}
// todo: exception, more?
filter.parts().all(|filter_part| {
if let Some(ex) = self.exception.as_ref() {
if filter_part.is_match(&ex.message) || filter_part.is_match(&ex.exception) {
return true;
}
}
filter_part.is_match(&self.app)
|| filter_part.is_match(&self.message)
|| filter_part.is_match(self.request_id.as_str())