Skip to content

Commit cb2d9f7

Browse files
committed
improve
1 parent af3e828 commit cb2d9f7

10 files changed

Lines changed: 139 additions & 170 deletions

.github/workflows/deploy-nuget.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,16 @@ jobs:
3333
if [ ! -z "$PROJECT_PATH" ]; then
3434
APP=`basename "${PROJECT_PATH}" .csproj`
3535
fi
36-
36+
3737
CHANGE_FILES=`git diff --no-commit-id --name-only HEAD^`
3838
3939
CHANGED=`echo "$CHANGE_FILES" | grep -Em 1 '.cs|.proto' || true`
4040
if [ -z "$CHANGED" ] && [ "${{ inputs.force }}" != true ]; then
4141
echo "No changes detected"
42-
42+
4343
APP=""
4444
fi
45-
45+
4646
echo "app=${APP}" >> $GITHUB_OUTPUT
4747
Build:
4848
needs: Detect
@@ -62,5 +62,5 @@ jobs:
6262
name: Push Package
6363
with:
6464
artifact: ${{ needs.Build.outputs.artifact }}
65-
nuget-api-url: ${{ secrets.NUGET_API_URL }}
65+
nuget-api-url: ${{ vars.NUGET_API_URL }}
6666
nuget-api-key: ${{ secrets.NUGET_API_KEY }}

CustomLoggingOptions.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace Netcorext.Logging.HttpClientLogger;
22

33
public class CustomLoggingOptions
44
{
5-
public bool LogRequestHeader { get; set; }
6-
public bool LogRequestBody { get; set; }
7-
public bool LogResponseHeader { get; set; }
8-
public bool LogResponseBody { get; set; }
9-
public long SlowRequestLoggingThreshold { get; set; } = 2 * 1000;
10-
}
5+
public bool LogRequestHeader { get; set; } = true;
6+
public bool LogRequestBody { get; set; } = true;
7+
public bool LogResponseHeader { get; set; } = true;
8+
public bool LogResponseBody { get; set; } = true;
9+
public long SlowRequestLoggingThreshold { get; set; } = 1000;
10+
}

Extensions/HttpClientBuilderExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static IHttpClientBuilder AddLoggingHttpMessage(this IHttpClientBuilder b
1010
builder.Services.RemoveAll<IHttpMessageHandlerBuilderFilter>();
1111
builder.Services.TryAddSingleton<CustomLoggingOptions>();
1212
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IHttpMessageHandlerBuilderFilter, CustomLoggingHttpMessageHandlerBuilderFilter>());
13-
13+
1414
return builder;
1515
}
1616

Handlers/CustomLoggingHttpMessageHandler.cs

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -34,49 +34,32 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
3434

3535
private static class Log
3636
{
37-
public static class EventIds
38-
{
39-
public static readonly EventId RequestStart = new(100, "RequestStart");
40-
public static readonly EventId RequestEnd = new(101, "RequestEnd");
41-
42-
public static readonly EventId RequestHeader = new(102, "RequestHeader");
43-
public static readonly EventId ResponseHeader = new(103, "ResponseHeader");
44-
45-
public static readonly EventId RequestContent = new(104, "RequestContent");
46-
public static readonly EventId ResponseContent = new(105, "ResponseContent");
47-
}
48-
49-
private static readonly Action<ILogger, HttpMethod, Uri, Exception> _requestStart = LoggerMessage.Define<HttpMethod, Uri>(
50-
LogLevel.Information,
51-
EventIds.RequestStart,
52-
"Sending HTTP request {HttpMethod} {Uri}");
37+
private static readonly Action<ILogger, HttpMethod, Uri?, Exception?> LogRequestStart = LoggerMessage.Define<HttpMethod, Uri?>(LogLevel.Information,
38+
LoggerEventIds.RequestStart,
39+
"Sending HTTP request {HttpMethod} {Uri}");
5340

54-
private static readonly Action<ILogger, double, HttpStatusCode, Exception> _requestEnd = LoggerMessage.Define<double, HttpStatusCode>(
55-
LogLevel.Information,
56-
EventIds.RequestEnd,
57-
"Received HTTP response after {ElapsedMilliseconds}ms - {StatusCode}");
41+
private static readonly Action<ILogger, double, HttpStatusCode, Exception?> LogRequestEnd = LoggerMessage.Define<double, HttpStatusCode>(LogLevel.Information,
42+
LoggerEventIds.RequestEnd,
43+
"Received HTTP response after {ElapsedMilliseconds}ms - {StatusCode}");
5844

59-
private static readonly Action<ILogger, double, HttpStatusCode, Exception> _requestEndTooSlow = LoggerMessage.Define<double, HttpStatusCode>(
60-
LogLevel.Warning,
61-
EventIds.RequestEnd,
62-
"Received HTTP response too slow, elapsed: {ElapsedMilliseconds}ms - {StatusCode}");
45+
private static readonly Action<ILogger, double, HttpStatusCode, Exception?> LogRequestEndTooSlow = LoggerMessage.Define<double, HttpStatusCode>(LogLevel.Warning,
46+
LoggerEventIds.RequestEnd,
47+
"Received HTTP response too slow, elapsed: {ElapsedMilliseconds}ms - {StatusCode}");
6348

6449
public static void RequestStart(CustomLoggingOptions options, ILogger logger, HttpRequestMessage request)
6550
{
66-
_requestStart(logger, request.Method, request.RequestUri, null);
51+
LogRequestStart(logger, request.Method, request.RequestUri, null);
6752

68-
if (options.LogRequestHeader && logger.IsEnabled(LogLevel.Debug))
69-
logger.Log(
70-
LogLevel.Debug,
71-
EventIds.RequestHeader,
53+
if (options.LogRequestHeader && logger.IsEnabled(LogLevel.Information))
54+
logger.Log(LogLevel.Information,
55+
LoggerEventIds.RequestHeader,
7256
new HttpHeadersLogValue(Kind.Request, request.Headers, request.Content?.Headers),
7357
null,
7458
(state, ex) => state.ToString());
7559

76-
if (options.LogRequestBody && logger.IsEnabled(LogLevel.Debug))
77-
logger.Log(
78-
LogLevel.Debug,
79-
EventIds.RequestContent,
60+
if (options.LogRequestBody && logger.IsEnabled(LogLevel.Information))
61+
logger.Log(LogLevel.Information,
62+
LoggerEventIds.RequestContent,
8063
new HttpContentLogValue(Kind.Request, request.Content),
8164
null,
8265
(state, ex) => state.ToString());
@@ -86,28 +69,26 @@ public static void RequestEnd(CustomLoggingOptions options, ILogger logger, Http
8669
{
8770
if (duration.TotalMilliseconds < options.SlowRequestLoggingThreshold)
8871
{
89-
_requestEnd(logger, duration.TotalMilliseconds, response.StatusCode, null);
72+
LogRequestEnd(logger, duration.TotalMilliseconds, response.StatusCode, null);
9073
}
9174
else
9275
{
93-
_requestEndTooSlow(logger, duration.TotalMilliseconds, response.StatusCode, null);
76+
LogRequestEndTooSlow(logger, duration.TotalMilliseconds, response.StatusCode, null);
9477
}
9578

96-
if (options.LogResponseHeader && logger.IsEnabled(LogLevel.Debug))
97-
logger.Log(
98-
LogLevel.Debug,
99-
EventIds.ResponseHeader,
79+
if (options.LogResponseHeader && logger.IsEnabled(LogLevel.Information))
80+
logger.Log(LogLevel.Information,
81+
LoggerEventIds.ResponseHeader,
10082
new HttpHeadersLogValue(Kind.Response, response.Headers, response.Content?.Headers),
10183
null,
10284
(state, ex) => state.ToString());
10385

10486
if (options.LogResponseBody && logger.IsEnabled(LogLevel.Debug))
105-
logger.Log(
106-
LogLevel.Debug,
107-
EventIds.ResponseContent,
87+
logger.Log(LogLevel.Information,
88+
LoggerEventIds.ResponseContent,
10889
new HttpContentLogValue(Kind.Response, response.Content),
10990
null,
11091
(state, ex) => state.ToString());
11192
}
11293
}
113-
}
94+
}

Handlers/CustomLoggingScopeHttpMessageHandler.cs

Lines changed: 27 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -35,57 +35,40 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
3535

3636
private static class Log
3737
{
38-
public static class EventIds
39-
{
40-
public static readonly EventId PipelineStart = new(100, "RequestPipelineStart");
41-
public static readonly EventId PipelineEnd = new(101, "RequestPipelineEnd");
42-
43-
public static readonly EventId RequestHeader = new(102, "RequestPipelineRequestHeader");
44-
public static readonly EventId ResponseHeader = new(103, "RequestPipelineResponseHeader");
45-
46-
public static readonly EventId RequestContent = new(104, "RequestPipelineContent");
47-
public static readonly EventId ResponseContent = new(105, "ResponsePipelineContent");
48-
}
38+
private static readonly Func<ILogger, HttpMethod, Uri?, IDisposable> LogBeginRequestPipelineScope = LoggerMessage.DefineScope<HttpMethod, Uri?>("HTTP {HttpMethod} {Uri}");
4939

50-
private static readonly Func<ILogger, HttpMethod, Uri, IDisposable> _beginRequestPipelineScope = LoggerMessage.DefineScope<HttpMethod, Uri>("HTTP {HttpMethod} {Uri}");
40+
private static readonly Action<ILogger, HttpMethod, Uri?, Exception?> LogRequestPipelineStart = LoggerMessage.Define<HttpMethod, Uri?>(LogLevel.Information,
41+
LoggerEventIds.RequestStart,
42+
"Start processing HTTP request {HttpMethod} {Uri}");
5143

52-
private static readonly Action<ILogger, HttpMethod, Uri, Exception> _requestPipelineStart = LoggerMessage.Define<HttpMethod, Uri>(
53-
LogLevel.Information,
54-
EventIds.PipelineStart,
55-
"Start processing HTTP request {HttpMethod} {Uri}");
44+
private static readonly Action<ILogger, double, HttpStatusCode, Exception?> LogRequestPipelineEnd = LoggerMessage.Define<double, HttpStatusCode>(LogLevel.Information,
45+
LoggerEventIds.RequestEnd,
46+
"End processing HTTP request after {ElapsedMilliseconds}ms - {StatusCode}");
5647

57-
private static readonly Action<ILogger, double, HttpStatusCode, Exception> _requestPipelineEnd = LoggerMessage.Define<double, HttpStatusCode>(
58-
LogLevel.Information,
59-
EventIds.PipelineEnd,
60-
"End processing HTTP request after {ElapsedMilliseconds}ms - {StatusCode}");
61-
62-
private static readonly Action<ILogger, double, HttpStatusCode, Exception> _requestPipelineEndTooSlow = LoggerMessage.Define<double, HttpStatusCode>(
63-
LogLevel.Warning,
64-
EventIds.PipelineEnd,
65-
"End processing HTTP request too slow, elapsed: {ElapsedMilliseconds}ms - {StatusCode}");
48+
private static readonly Action<ILogger, double, HttpStatusCode, Exception?> LogRequestPipelineEndTooSlow = LoggerMessage.Define<double, HttpStatusCode>(LogLevel.Warning,
49+
LoggerEventIds.RequestEnd,
50+
"End processing HTTP request too slow, elapsed: {ElapsedMilliseconds}ms - {StatusCode}");
6651

6752

6853
public static IDisposable BeginRequestPipelineScope(ILogger logger, HttpRequestMessage request)
6954
{
70-
return _beginRequestPipelineScope(logger, request.Method, request.RequestUri);
55+
return LogBeginRequestPipelineScope(logger, request.Method, request.RequestUri);
7156
}
7257

7358
public static void RequestPipelineStart(CustomLoggingOptions options, ILogger logger, HttpRequestMessage request)
7459
{
75-
_requestPipelineStart(logger, request.Method, request.RequestUri, null);
60+
LogRequestPipelineStart(logger, request.Method, request.RequestUri, null);
7661

77-
if (options.LogRequestHeader && logger.IsEnabled(LogLevel.Debug))
78-
logger.Log(
79-
LogLevel.Debug,
80-
EventIds.RequestHeader,
62+
if (options.LogRequestHeader && logger.IsEnabled(LogLevel.Information))
63+
logger.Log(LogLevel.Information,
64+
LoggerEventIds.RequestHeader,
8165
new HttpHeadersLogValue(Kind.Request, request.Headers, request.Content?.Headers),
8266
null,
8367
(state, ex) => state.ToString());
8468

85-
if (options.LogRequestBody && logger.IsEnabled(LogLevel.Debug))
86-
logger.Log(
87-
LogLevel.Debug,
88-
EventIds.RequestContent,
69+
if (options.LogRequestBody && logger.IsEnabled(LogLevel.Information))
70+
logger.Log(LogLevel.Information,
71+
LoggerEventIds.RequestContent,
8972
new HttpContentLogValue(Kind.Request, request.Content),
9073
null,
9174
(state, ex) => state.ToString());
@@ -95,28 +78,28 @@ public static void RequestPipelineEnd(CustomLoggingOptions options, ILogger logg
9578
{
9679
if (duration.TotalMilliseconds < options.SlowRequestLoggingThreshold)
9780
{
98-
_requestPipelineEnd(logger, duration.TotalMilliseconds, response.StatusCode, null);
81+
LogRequestPipelineEnd(logger, duration.TotalMilliseconds, response.StatusCode, null);
9982
}
10083
else
10184
{
102-
_requestPipelineEndTooSlow(logger, duration.TotalMilliseconds, response.StatusCode, null);
85+
LogRequestPipelineEndTooSlow(logger, duration.TotalMilliseconds, response.StatusCode, null);
10386
}
10487

105-
if (options.LogResponseHeader && logger.IsEnabled(LogLevel.Debug))
88+
if (options.LogResponseHeader && logger.IsEnabled(LogLevel.Information))
10689
logger.Log(
107-
LogLevel.Debug,
108-
EventIds.ResponseHeader,
90+
LogLevel.Information,
91+
LoggerEventIds.RequestHeader,
10992
new HttpHeadersLogValue(Kind.Response, response.Headers, response.Content?.Headers),
11093
null,
11194
(state, ex) => state.ToString());
11295

113-
if (options.LogResponseBody && logger.IsEnabled(LogLevel.Debug))
96+
if (options.LogResponseBody && logger.IsEnabled(LogLevel.Information))
11497
logger.Log(
115-
LogLevel.Trace,
116-
EventIds.ResponseContent,
98+
LogLevel.Information,
99+
LoggerEventIds.ResponseContent,
117100
new HttpContentLogValue(Kind.Response, response.Content),
118101
null,
119102
(state, ex) => state.ToString());
120103
}
121104
}
122-
}
105+
}

0 commit comments

Comments
 (0)