Skip to content

Commit be28e5b

Browse files
authored
WhenEmpty - Optimize when IsFixedText (#6074)
1 parent fba8395 commit be28e5b

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/NLog/LayoutRenderers/Wrappers/WhenEmptyLayoutRendererWrapper.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ protected override void InitializeLayoutRenderer()
7070

7171
if (Inner is SimpleLayout innerLayout && WhenEmpty is SimpleLayout whenEmptyLayout)
7272
{
73-
if ((innerLayout.IsFixedText || innerLayout.IsSimpleStringText) && (whenEmptyLayout.IsFixedText || whenEmptyLayout.IsSimpleStringText))
73+
if (innerLayout.IsFixedText)
74+
{
75+
_stringValueRenderer = ResolveFixedWhenEmpty(innerLayout, whenEmptyLayout);
76+
}
77+
else if (innerLayout.IsSimpleStringText && (whenEmptyLayout.IsFixedText || whenEmptyLayout.IsSimpleStringText))
7478
{
7579
_stringValueRenderer = (logEvent) =>
7680
{
@@ -81,6 +85,24 @@ protected override void InitializeLayoutRenderer()
8185
}
8286
}
8387

88+
private static Func<LogEventInfo, string>? ResolveFixedWhenEmpty(SimpleLayout innerLayout, SimpleLayout whenEmptyLayout)
89+
{
90+
if (!string.IsNullOrEmpty(innerLayout.FixedText))
91+
{
92+
return (logEvent) => innerLayout.FixedText ?? string.Empty;
93+
}
94+
else if (whenEmptyLayout.IsFixedText)
95+
{
96+
return (logEvent) => whenEmptyLayout.FixedText ?? string.Empty;
97+
}
98+
else if (whenEmptyLayout.IsSimpleStringText)
99+
{
100+
return (logEvent) => whenEmptyLayout.Render(logEvent);
101+
}
102+
103+
return null;
104+
}
105+
84106
/// <inheritdoc/>
85107
protected override void RenderInnerAndTransform(LogEventInfo logEvent, StringBuilder builder, int orgLength)
86108
{

0 commit comments

Comments
 (0)