@@ -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 ;
0 commit comments