Skip to content

Commit 44b41ef

Browse files
reakaleekMpdreamz
andauthored
Add SearchUsecase result logs (#2197)
* Add SearchUsecase result logs * Update src/api/Elastic.Documentation.Api.Core/Search/SearchUsecase.cs Co-authored-by: Martijn Laarman <[email protected]> * Use LogProperties --------- Co-authored-by: Martijn Laarman <[email protected]>
1 parent 7874ec5 commit 44b41ef

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

Directory.Packages.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<PackageVersion Include="AWSSDK.SQS" Version="4.0.2.2" />
2727
<PackageVersion Include="AWSSDK.S3" Version="4.0.7.14" />
2828
<PackageVersion Include="Elastic.OpenTelemetry" Version="1.1.0" />
29+
<PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="9.7.0" />
2930
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.13.0" />
3031
<PackageVersion Include="Generator.Equals" Version="3.2.1" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
3132
<PackageVersion Include="KubernetesClient" Version="17.0.14" />

src/api/Elastic.Documentation.Api.Core/Elastic.Documentation.Api.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Microsoft.Extensions.Logging" />
13+
<PackageReference Include="Microsoft.Extensions.Telemetry.Abstractions" />
1314
</ItemGroup>
1415

1516
</Project>

src/api/Elastic.Documentation.Api.Core/Search/SearchUsecase.cs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,44 @@
22
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information
44

5+
using Microsoft.Extensions.Logging;
6+
57
namespace Elastic.Documentation.Api.Core.Search;
68

7-
public class SearchUsecase(ISearchGateway searchGateway)
9+
public partial class SearchUsecase(ISearchGateway searchGateway, ILogger<SearchUsecase> logger)
810
{
911
public async Task<SearchResponse> Search(SearchRequest request, Cancel ctx = default)
1012
{
11-
12-
// var validationResult = validator.Validate(request);
13-
// if (!validationResult.IsValid)
14-
// throw new ArgumentException(validationResult.Message);
15-
1613
var (totalHits, results) = await searchGateway.SearchAsync(
1714
request.Query,
1815
request.PageNumber,
1916
request.PageSize,
2017
ctx
2118
);
2219

23-
24-
return new SearchResponse
20+
var response = new SearchResponse
2521
{
2622
Results = results,
2723
TotalResults = totalHits,
2824
PageNumber = request.PageNumber,
2925
PageSize = request.PageSize,
3026
};
27+
28+
LogSearchResults(
29+
logger,
30+
response.PageSize,
31+
response.PageNumber,
32+
request.Query,
33+
new SearchResultsLogProperties(results.Select(i => i.Url).ToArray())
34+
);
35+
36+
return response;
3137
}
38+
39+
[LoggerMessage(Level = LogLevel.Information, Message = "Search completed with {PageSize} (page {PageNumber}) results for query '{SearchQuery}'")]
40+
private static partial void LogSearchResults(ILogger logger, int pageSize, int pageNumber, string searchQuery, [LogProperties] SearchResultsLogProperties result);
41+
42+
private sealed record SearchResultsLogProperties(string[] Urls);
3243
}
3344

3445
public record SearchRequest

0 commit comments

Comments
 (0)