Skip to content

Commit 62b775b

Browse files
committed
Move AddProperty() out to avoid a closure allocation
1 parent 6fd2e72 commit 62b775b

File tree

3 files changed

+24
-23
lines changed

3 files changed

+24
-23
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:Boolean x:Key="/Default/UserDictionary/Words/=enricher/@EntryIndexedValue">True</s:Boolean>
23
<s:Boolean x:Key="/Default/UserDictionary/Words/=stringified/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLoggerProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class SerilogLoggerProvider : ILoggerProvider, ILogEventEnricher, ISuppor
2121
// May be null; if it is, Log.Logger will be lazily used
2222
readonly ILogger? _logger;
2323
readonly Action? _dispose;
24-
private IExternalScopeProvider? _externalScopeProvider;
24+
IExternalScopeProvider? _externalScopeProvider;
2525

2626
/// <summary>
2727
/// Construct a <see cref="SerilogLoggerProvider"/>.

src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLoggerScope.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,6 @@ public void Dispose()
4949

5050
public void EnrichAndCreateScopeItem(LogEvent logEvent, ILogEventPropertyFactory propertyFactory, out LogEventPropertyValue? scopeItem)
5151
{
52-
void AddProperty(string key, object? value)
53-
{
54-
var destructureObject = false;
55-
56-
if (key.StartsWith("@"))
57-
{
58-
key = SerilogLogger.GetKeyWithoutFirstSymbol(SerilogLogger.DestructureDictionary, key);
59-
destructureObject = true;
60-
}
61-
else if (key.StartsWith("$"))
62-
{
63-
key = SerilogLogger.GetKeyWithoutFirstSymbol(SerilogLogger.StringifyDictionary, key);
64-
value = value?.ToString();
65-
}
66-
67-
var property = propertyFactory.CreateProperty(key, value, destructureObject);
68-
logEvent.AddPropertyIfAbsent(property);
69-
}
70-
7152
if (_state == null)
7253
{
7354
scopeItem = null;
@@ -84,7 +65,7 @@ void AddProperty(string key, object? value)
8465
if (stateProperty.Key == SerilogLoggerProvider.OriginalFormatPropertyName && stateProperty.Value is string)
8566
scopeItem = new ScalarValue(_state.ToString());
8667
else
87-
AddProperty(stateProperty.Key, stateProperty.Value);
68+
AddProperty(logEvent, propertyFactory, stateProperty.Key, stateProperty.Value);
8869
}
8970
}
9071
else if (_state is IEnumerable<KeyValuePair<string, object>> stateProperties)
@@ -96,7 +77,7 @@ void AddProperty(string key, object? value)
9677
if (stateProperty.Key == SerilogLoggerProvider.OriginalFormatPropertyName && stateProperty.Value is string)
9778
scopeItem = new ScalarValue(_state.ToString());
9879
else
99-
AddProperty(stateProperty.Key, stateProperty.Value);
80+
AddProperty(logEvent, propertyFactory, stateProperty.Key, stateProperty.Value);
10081
}
10182
}
10283
else if (_state is ValueTuple<string, object?> tuple)
@@ -106,11 +87,30 @@ void AddProperty(string key, object? value)
10687
if (tuple.Item1 == SerilogLoggerProvider.OriginalFormatPropertyName && tuple.Item2 is string)
10788
scopeItem = new ScalarValue(_state.ToString());
10889
else
109-
AddProperty(tuple.Item1, tuple.Item2);
90+
AddProperty(logEvent, propertyFactory, tuple.Item1, tuple.Item2);
11091
}
11192
else
11293
{
11394
scopeItem = propertyFactory.CreateProperty(NoName, _state).Value;
11495
}
11596
}
97+
98+
static void AddProperty(LogEvent logEvent, ILogEventPropertyFactory propertyFactory, string key, object? value)
99+
{
100+
var destructureObject = false;
101+
102+
if (key.StartsWith("@"))
103+
{
104+
key = SerilogLogger.GetKeyWithoutFirstSymbol(SerilogLogger.DestructureDictionary, key);
105+
destructureObject = true;
106+
}
107+
else if (key.StartsWith("$"))
108+
{
109+
key = SerilogLogger.GetKeyWithoutFirstSymbol(SerilogLogger.StringifyDictionary, key);
110+
value = value?.ToString();
111+
}
112+
113+
var property = propertyFactory.CreateProperty(key, value, destructureObject);
114+
logEvent.AddPropertyIfAbsent(property);
115+
}
116116
}

0 commit comments

Comments
 (0)