* Fixes #13715 issue with simple logviewer searches * Update Logviewer test - to ensure MessageLike and simple equivalent returns same result count to help catch
This commit is contained in:
@@ -29,7 +29,7 @@ internal class ExpressionFilter : ILogFilter
|
||||
// If the expression is one word and doesn't contain a serilog operator then we can perform a like search
|
||||
if (!filterExpression.Contains(" ") && !filterExpression.ContainsAny(ExpressionOperators.Select(c => c)))
|
||||
{
|
||||
filter = PerformMessageLikeFilter(filterExpression);
|
||||
filter = PerformMessageLikeFilter(filterExpression, customSerilogFunctions);
|
||||
}
|
||||
|
||||
// check if it's a valid expression
|
||||
@@ -48,7 +48,7 @@ internal class ExpressionFilter : ILogFilter
|
||||
{
|
||||
// 'error' describes a syntax error, where it was unable to compile an expression
|
||||
// Assume the expression was a search string and make a Like filter from that
|
||||
filter = PerformMessageLikeFilter(filterExpression);
|
||||
filter = PerformMessageLikeFilter(filterExpression, customSerilogFunctions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,10 +57,10 @@ internal class ExpressionFilter : ILogFilter
|
||||
|
||||
public bool TakeLogEvent(LogEvent e) => _filter == null || _filter(e);
|
||||
|
||||
private Func<LogEvent, bool>? PerformMessageLikeFilter(string filterExpression)
|
||||
private Func<LogEvent, bool>? PerformMessageLikeFilter(string filterExpression, SerilogLegacyNameResolver serilogLegacyNameResolver)
|
||||
{
|
||||
var filterSearch = $"@Message like '%{SerilogExpression.EscapeLikeExpressionContent(filterExpression)}%'";
|
||||
if (SerilogExpression.TryCompile(filterSearch, out CompiledExpression? compiled, out var error))
|
||||
if (SerilogExpression.TryCompile(filterSearch, null, serilogLegacyNameResolver, out CompiledExpression? compiled, out var error))
|
||||
{
|
||||
// `compiled` is a function that can be executed against `LogEvent`s:
|
||||
return evt =>
|
||||
|
||||
@@ -197,6 +197,8 @@ public class LogviewerTests
|
||||
[TestCase("@mt = '{EndMessage} ({Duration}ms) [Timing {TimingId}]'", 26)]
|
||||
[TestCase("SortedComponentTypes[?] = 'Umbraco.Web.Search.ExamineComponent'", 1)]
|
||||
[TestCase("Contains(SortedComponentTypes[?], 'DatabaseServer')", 1)]
|
||||
[TestCase("@Message like '%definition%'", 6)]
|
||||
[TestCase("definition", 6)]
|
||||
[Test]
|
||||
public void Logs_Can_Query_With_Expressions(string queryToVerify, int expectedCount)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user