Skip to content

Commit a4de112

Browse files
committed
NLogLogger - Skip enumerating Properties when empty collection
1 parent b768bf7 commit a4de112

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

src/Akka.Logger.NLog/NLogLogger.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Akka.Dispatch;
1212
using Akka.Event;
1313
using NLog;
14+
using NLog.MessageTemplates;
1415
using NLogger = global::NLog.Logger;
1516
using NLogLevel = global::NLog.LogLevel;
1617

@@ -62,23 +63,25 @@ private static void LogEvent(LogEvent logEvent, NLogLevel logLevel)
6263
logEventInfo.Properties["actorPath"] = actorPath; // Same as Serilog
6364
logEventInfo.Properties["threadId"] = logEvent.Thread.ManagedThreadId; // ThreadId of the original LogEvent (instead of async Logger threadid)
6465

65-
// Add structured logging properties from semantic logging
66-
// This enables NLog layouts and targets to access structured properties by name
67-
if (logEvent.TryGetProperties(out var properties))
68-
{
69-
foreach (var prop in properties)
70-
{
71-
logEventInfo.Properties[prop.Key] = prop.Value;
72-
}
73-
}
74-
7566
logger.Log(logEventInfo);
7667
}
7768

7869
private static LogEventInfo CreateLogEventInfo(NLogger logger, NLogLevel level, LogEvent logEvent)
7970
{
8071
if (logEvent.Message is LogMessage logMessage)
8172
{
73+
var properties = logMessage.GetProperties();
74+
if (properties?.Count > 0)
75+
{
76+
var formattedMessage = logMessage.ToString();
77+
var logEventInfo = new LogEventInfo(level, logger.Name, formattedMessage, logMessage.Format, Array.Empty<MessageTemplateParameter>());
78+
foreach (var prop in properties)
79+
{
80+
logEventInfo.Properties[prop.Key] = prop.Value;
81+
}
82+
return logEventInfo;
83+
}
84+
8285
var parameters = logMessage.Parameters();
8386
var parameterArray = parameters as object[] ?? parameters?.ToArray();
8487
return new LogEventInfo(level, logger.Name, null, logMessage.Format, parameterArray, logEvent.Cause);

0 commit comments

Comments
 (0)