Skip to content

Commit 7fd05b8

Browse files
committed
NLogConfigurationItem - ToString
1 parent a56df90 commit 7fd05b8

File tree

6 files changed

+47
-17
lines changed

6 files changed

+47
-17
lines changed

src/NLog/Common/InternalLogger.cs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -460,23 +460,22 @@ private static string ExpandFilePathVariables(string internalLogFile)
460460
{
461461
try
462462
{
463-
if (ContainsSubStringIgnoreCase(internalLogFile, "${currentdir}", out var currentDirToken))
463+
if (internalLogFile.IndexOf('%') >= 0)
464+
internalLogFile = Environment.ExpandEnvironmentVariables(internalLogFile);
465+
if (ContainsSubStringIgnoreCase(internalLogFile, "${currentdir}", out var currentDirToken) && currentDirToken != null)
464466
internalLogFile = internalLogFile.Replace(currentDirToken, System.IO.Directory.GetCurrentDirectory() + System.IO.Path.DirectorySeparatorChar.ToString());
465-
if (ContainsSubStringIgnoreCase(internalLogFile, "${basedir}", out var baseDirToken))
467+
if (ContainsSubStringIgnoreCase(internalLogFile, "${basedir}", out var baseDirToken) && baseDirToken != null)
466468
internalLogFile = internalLogFile.Replace(baseDirToken, LogManager.LogFactory.CurrentAppEnvironment.AppDomainBaseDirectory + System.IO.Path.DirectorySeparatorChar.ToString());
467-
if (ContainsSubStringIgnoreCase(internalLogFile, "${tempdir}", out var tempDirToken))
469+
if (ContainsSubStringIgnoreCase(internalLogFile, "${tempdir}", out var tempDirToken) && tempDirToken != null)
468470
internalLogFile = internalLogFile.Replace(tempDirToken, LogManager.LogFactory.CurrentAppEnvironment.UserTempFilePath + System.IO.Path.DirectorySeparatorChar.ToString());
469-
if (ContainsSubStringIgnoreCase(internalLogFile, "${processdir}", out var processDirToken))
471+
if (ContainsSubStringIgnoreCase(internalLogFile, "${processdir}", out var processDirToken) && processDirToken != null)
470472
internalLogFile = internalLogFile.Replace(processDirToken, System.IO.Path.GetDirectoryName(LogManager.LogFactory.CurrentAppEnvironment.CurrentProcessFilePath) + System.IO.Path.DirectorySeparatorChar.ToString());
471-
if (ContainsSubStringIgnoreCase(internalLogFile, "${commonApplicationDataDir}", out var commonAppDataDirToken))
473+
if (ContainsSubStringIgnoreCase(internalLogFile, "${commonApplicationDataDir}", out var commonAppDataDirToken) && commonAppDataDirToken != null)
472474
internalLogFile = internalLogFile.Replace(commonAppDataDirToken, NLog.LayoutRenderers.SpecialFolderLayoutRenderer.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + System.IO.Path.DirectorySeparatorChar.ToString());
473-
if (ContainsSubStringIgnoreCase(internalLogFile, "${userApplicationDataDir}", out var appDataDirToken))
475+
if (ContainsSubStringIgnoreCase(internalLogFile, "${userApplicationDataDir}", out var appDataDirToken) && appDataDirToken != null)
474476
internalLogFile = internalLogFile.Replace(appDataDirToken, NLog.LayoutRenderers.SpecialFolderLayoutRenderer.GetFolderPath(Environment.SpecialFolder.ApplicationData) + System.IO.Path.DirectorySeparatorChar.ToString());
475-
if (ContainsSubStringIgnoreCase(internalLogFile, "${userLocalApplicationDataDir}", out var localapplicationdatadir))
476-
internalLogFile = internalLogFile.Replace(localapplicationdatadir, NLog.LayoutRenderers.SpecialFolderLayoutRenderer.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + System.IO.Path.DirectorySeparatorChar.ToString());
477-
if (internalLogFile.IndexOf('%') >= 0)
478-
internalLogFile = Environment.ExpandEnvironmentVariables(internalLogFile);
479-
477+
if (ContainsSubStringIgnoreCase(internalLogFile, "${userLocalApplicationDataDir}", out var localapplicationdataToken) && localapplicationdataToken != null)
478+
internalLogFile = internalLogFile.Replace(localapplicationdataToken, NLog.LayoutRenderers.SpecialFolderLayoutRenderer.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + System.IO.Path.DirectorySeparatorChar.ToString());
480479
if (!string.IsNullOrEmpty(internalLogFile) && internalLogFile.IndexOf('.') >= 0)
481480
internalLogFile = AppEnvironmentWrapper.FixFilePathWithLongUNC(internalLogFile);
482481

@@ -488,12 +487,7 @@ private static string ExpandFilePathVariables(string internalLogFile)
488487
}
489488
}
490489

491-
private static bool ContainsSubStringIgnoreCase(string haystack, string needle,
492-
#if NETSTANDARD2_1_OR_GREATER || NET
493-
[System.Diagnostics.CodeAnalysis.NotNullWhen(true)]
494-
#endif
495-
out string? result
496-
)
490+
private static bool ContainsSubStringIgnoreCase(string haystack, string needle, out string? result)
497491
{
498492
int needlePos = haystack.IndexOf(needle, StringComparison.OrdinalIgnoreCase);
499493
result = needlePos >= 0 ? haystack.Substring(needlePos, needle.Length) : null;

src/NLog/Layouts/CSV/CsvColumn.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,11 @@ public CsvQuotingMode Quoting
124124
}
125125
}
126126
internal CsvQuotingMode? _quoting;
127+
128+
/// <inhertitdoc />
129+
public override string ToString()
130+
{
131+
return $"{Name}={Layout}";
132+
}
127133
}
128134
}

src/NLog/Layouts/JSON/JsonAttribute.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,5 +217,14 @@ private bool RenderAppendJsonValue(LogEventInfo logEvent, StringBuilder builder,
217217
Layout.Render(logEvent, builder);
218218
return IncludeEmptyValue || builder.Length > valueStart;
219219
}
220+
221+
/// <inheritdoc/>
222+
public override string ToString()
223+
{
224+
if (Encode || Layout is SimpleLayout)
225+
return $"{Name}={Layout}";
226+
else
227+
return $"{Name} (Encode=false)";
228+
}
220229
}
221230
}

src/NLog/Layouts/XML/XmlAttribute.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,5 +197,14 @@ private static void EscapeXmlWhenNeeded(object? objectValue, StringBuilder build
197197
XmlHelper.EscapeXmlWhenNeeded(xmlValueString, true, builder);
198198
}
199199
}
200+
201+
/// <inheritdoc/>
202+
public override string ToString()
203+
{
204+
if (Encode || Layout is SimpleLayout)
205+
return $"{Name}={Layout}";
206+
else
207+
return $"{Name} (Encode=false)";
208+
}
200209
}
201210
}

src/NLog/Targets/MethodCallParameter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,11 @@ public MethodCallParameter(string name, Layout layout, Type type)
133133
/// <param name="logEvent">Log event for rendering</param>
134134
/// <returns>Result value when available, else fallback to defaultValue</returns>
135135
public object? RenderValue(LogEventInfo logEvent) => _layoutInfo.RenderValue(logEvent);
136+
137+
/// <inheritdoc />
138+
public override string ToString()
139+
{
140+
return $"{Name}={Layout}";
141+
}
136142
}
137143
}

src/NLog/Targets/TargetPropertyWithContext.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,11 @@ public bool IncludeEmptyValue
118118
/// <param name="logEvent">Log event for rendering</param>
119119
/// <returns>Result value when available, else fallback to defaultValue</returns>
120120
public object? RenderValue(LogEventInfo logEvent) => _layoutInfo.RenderValue(logEvent);
121+
122+
/// <inheritdoc />
123+
public override string ToString()
124+
{
125+
return $"{Name}={Layout}";
126+
}
121127
}
122128
}

0 commit comments

Comments
 (0)