Skip to content

Commit 4207bd1

Browse files
authored
Use typed logging across core libraries (#2248)
1 parent 5b43184 commit 4207bd1

File tree

6 files changed

+79
-21
lines changed

6 files changed

+79
-21
lines changed

src/Proto.Actor/Utils/TaskFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static async Task Run(Func<Task> body, CancellationToken cancellationToke
4141
catch (Exception x)
4242
{
4343
x.CheckFailFast();
44-
Logger.LogError(x, "Unhandled exception in async job {Job}", name);
44+
Logger.UnhandledExceptionInAsyncJob(x, name);
4545
}
4646
}
4747
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System;
2+
using Microsoft.Extensions.Logging;
3+
4+
namespace Proto;
5+
6+
internal static partial class TaskFactoryLogMessages
7+
{
8+
[LoggerMessage(EventId = 0, Level = LogLevel.Error, Message = "Unhandled exception in async job {Job}")]
9+
internal static partial void UnhandledExceptionInAsyncJob(this ILogger logger, Exception exception, string job);
10+
}
11+

src/Proto.Cluster/Member/MemberList.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public MemberList(Cluster cluster, bool isClient = false)
107107
//only log if the member is known to us
108108
if (TryGetMember(b.MemberId, out _))
109109
{
110-
Logger.LogInformation("Blocking member {MemberId} due to {Reason}", b.MemberId, b.Reason);
110+
Logger.BlockingMemberDueToReason(b.MemberId, b.Reason);
111111
}
112112

113113
UpdateClusterTopology(_activeMembers.Members);
@@ -149,7 +149,7 @@ internal void InitializeTopologyConsensus() =>
149149
return memberStrategy.GetActivator(requestSourceAddress);
150150
}
151151

152-
Logger.LogInformation("MemberList did not find any activator for kind '{Kind}'", kind);
152+
Logger.DidNotFindActivatorForKind(kind);
153153

154154
return null;
155155
}
@@ -229,12 +229,12 @@ public void UpdateClusterTopology(IReadOnlyCollection<Member> members)
229229

230230
if (topology.Joined.Any())
231231
{
232-
Logger.LogInformation("[MemberList] Cluster members joined {MembersJoined}", topology.Joined);
232+
Logger.ClusterMembersJoined(topology.Joined);
233233
}
234234

235235
if (topology.Left.Any())
236236
{
237-
Logger.LogInformation("[MemberList] Cluster members left {MembersLeft}", topology.Left);
237+
Logger.ClusterMembersLeft(topology.Left);
238238
}
239239

240240
BroadcastTopologyChanges(topology);
@@ -320,7 +320,7 @@ private static ImmutableMemberSet RemoveDuplicateAddresses(ImmutableMemberSet ac
320320
var youngest = dup.OrderByDescending(m => m.Age).First();
321321
var rest = dup.Where(m => m.Id != youngest.Id).Select(m => m.Id).ToArray();
322322

323-
Logger.LogWarning("Duplicate address {Address} found, removing {Rest}", dup.Key, rest);
323+
Logger.DuplicateAddressFound(dup.Key, rest);
324324
activeMembers = activeMembers.Except(rest);
325325
}
326326

@@ -335,7 +335,7 @@ private void SelfBlocked()
335335
return;
336336
}
337337

338-
Logger.LogCritical("I have been blocked, exiting {Id}", MemberId);
338+
Logger.BlockedExiting(MemberId);
339339
_ = _cluster.ShutdownAsync(reason: "Blocked by MemberList");
340340
}
341341

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using Microsoft.Extensions.Logging;
2+
3+
namespace Proto.Cluster;
4+
5+
internal static partial class MemberListLogMessages
6+
{
7+
[LoggerMessage(EventId = 0, Level = LogLevel.Information, Message = "Blocking member {MemberId} due to {Reason}")]
8+
internal static partial void BlockingMemberDueToReason(this ILogger logger, string memberId, string reason);
9+
10+
[LoggerMessage(EventId = 1, Level = LogLevel.Information, Message = "MemberList did not find any activator for kind '{Kind}'")]
11+
internal static partial void DidNotFindActivatorForKind(this ILogger logger, string kind);
12+
13+
[LoggerMessage(EventId = 2, Level = LogLevel.Information, Message = "[MemberList] Cluster members joined {MembersJoined}")]
14+
internal static partial void ClusterMembersJoined(this ILogger logger, object? membersJoined);
15+
16+
[LoggerMessage(EventId = 3, Level = LogLevel.Information, Message = "[MemberList] Cluster members left {MembersLeft}")]
17+
internal static partial void ClusterMembersLeft(this ILogger logger, object? membersLeft);
18+
19+
[LoggerMessage(EventId = 4, Level = LogLevel.Warning, Message = "Duplicate address {Address} found, removing {Rest}")]
20+
internal static partial void DuplicateAddressFound(this ILogger logger, string address, object? rest);
21+
22+
[LoggerMessage(EventId = 5, Level = LogLevel.Critical, Message = "I have been blocked, exiting {Id}")]
23+
internal static partial void BlockedExiting(this ILogger logger, string id);
24+
}
25+

src/Proto.Remote/Endpoints/EndpointManager.cs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public async Task StopAsync()
6161
return;
6262
}
6363

64-
Logger.LogDebug("[{SystemAddress}] Stopping", _system.Address);
64+
Logger.Stopping(_system.Address);
6565

6666
_system.EventStream.Unsubscribe(_endpointTerminatedEvnSub);
6767

@@ -84,16 +84,12 @@ public async Task StopAsync()
8484

8585
StopActivator();
8686

87-
Logger.LogDebug("[{SystemAddress}] Stopped", _system.Address);
87+
Logger.Stopped(_system.Address);
8888
}
8989

9090
private async Task OnEndpointTerminated(EndpointTerminatedEvent evt)
9191
{
92-
if (Logger.IsEnabled(LogLevel.Debug))
93-
{
94-
Logger.LogDebug("[{SystemAddress}] Endpoint {Address} terminating", _system.Address,
95-
evt.Address ?? evt.ActorSystemId);
96-
}
92+
Logger.EndpointTerminating(_system.Address, evt.Address ?? evt.ActorSystemId);
9793

9894
Action? unblock = null;
9995
try
@@ -124,8 +120,7 @@ private async Task OnEndpointTerminated(EndpointTerminatedEvent evt)
124120
// the address will always be blocked while we dispose, at a minimum
125121
await endpoint.DisposeAsync().ConfigureAwait(false);
126122

127-
Logger.LogInformation("[{SystemAddress}] Endpoint {Address} terminated", _system.Address,
128-
evt.Address ?? evt.ActorSystemId);
123+
Logger.EndpointTerminated(_system.Address, evt.Address ?? evt.ActorSystemId);
129124

130125
if (evt.ShouldBlock && _remoteConfig.WaitAfterEndpointTerminationTimeSpan.HasValue)
131126
{
@@ -135,16 +130,14 @@ private async Task OnEndpointTerminated(EndpointTerminatedEvent evt)
135130
}
136131
else
137132
{
138-
Logger.LogDebug("[{SystemAddress}] Endpoint {Address} already removed.", _system.Address,
139-
evt.Address ?? evt.ActorSystemId);
133+
Logger.EndpointAlreadyRemoved(_system.Address, evt.Address ?? evt.ActorSystemId);
140134
}
141135
}
142136
catch (Exception ex)
143137
{
144138
// since these async EventStream subscription handlers are fire and forget, we need to
145139
// log if something goes wrong, or we'll never know
146-
Logger.LogError(ex, "[{SystemAddress}] Error during endpoint {Address} termination", _system.Address,
147-
evt.Address ?? evt.ActorSystemId);
140+
Logger.ErrorDuringEndpointTermination(ex, _system.Address, evt.Address ?? evt.ActorSystemId);
148141
}
149142
finally
150143
{
@@ -158,7 +151,7 @@ internal IEndpoint GetOrAddServerEndpoint(string? address)
158151
{
159152
if (address is null)
160153
{
161-
Logger.LogError("[{SystemAddress}] Tried to get endpoint for null address", _system.Address);
154+
Logger.TriedGetEndpointForNullAddress(_system.Address);
162155

163156
return _blockedEndpoint;
164157
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using Microsoft.Extensions.Logging;
3+
4+
namespace Proto.Remote;
5+
6+
internal static partial class EndpointManagerLogMessages
7+
{
8+
[LoggerMessage(EventId = 0, Level = LogLevel.Debug, Message = "[{SystemAddress}] Stopping")]
9+
internal static partial void Stopping(this ILogger logger, string systemAddress);
10+
11+
[LoggerMessage(EventId = 1, Level = LogLevel.Debug, Message = "[{SystemAddress}] Stopped")]
12+
internal static partial void Stopped(this ILogger logger, string systemAddress);
13+
14+
[LoggerMessage(EventId = 2, Level = LogLevel.Debug, Message = "[{SystemAddress}] Endpoint {Address} terminating")]
15+
internal static partial void EndpointTerminating(this ILogger logger, string systemAddress, string? address);
16+
17+
[LoggerMessage(EventId = 3, Level = LogLevel.Information, Message = "[{SystemAddress}] Endpoint {Address} terminated")]
18+
internal static partial void EndpointTerminated(this ILogger logger, string systemAddress, string? address);
19+
20+
[LoggerMessage(EventId = 4, Level = LogLevel.Debug, Message = "[{SystemAddress}] Endpoint {Address} already removed.")]
21+
internal static partial void EndpointAlreadyRemoved(this ILogger logger, string systemAddress, string? address);
22+
23+
[LoggerMessage(EventId = 5, Level = LogLevel.Error, Message = "[{SystemAddress}] Error during endpoint {Address} termination")]
24+
internal static partial void ErrorDuringEndpointTermination(this ILogger logger, Exception ex, string systemAddress, string? address);
25+
26+
[LoggerMessage(EventId = 6, Level = LogLevel.Error, Message = "[{SystemAddress}] Tried to get endpoint for null address")]
27+
internal static partial void TriedGetEndpointForNullAddress(this ILogger logger, string systemAddress);
28+
}
29+

0 commit comments

Comments
 (0)