From 14e4ea4592e77a276e39c40c8fa1aa8b4cfa3df8 Mon Sep 17 00:00:00 2001 From: rmcrackan Date: Thu, 12 Mar 2026 13:53:27 -0400 Subject: [PATCH] Resolve to an absolute path when reading --- Source/LibationFileManager/LibationFiles.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Source/LibationFileManager/LibationFiles.cs b/Source/LibationFileManager/LibationFiles.cs index 1268dc88..31c839f5 100644 --- a/Source/LibationFileManager/LibationFiles.cs +++ b/Source/LibationFileManager/LibationFiles.cs @@ -248,6 +248,17 @@ public class LibationFiles libationFiles = runShellCommand("echo " + libationFiles) ?? libationFiles; } + // Resolve relative paths to absolute using the appsettings.json directory as base, + // so that Location is consistent everywhere (e.g. avoids different resolution when + // loading Serilog config vs. checking SettingsAreValid). Fixes Linux crash when + // appsettings in process dir contains "./LibationFiles" (e.g. issue #1677). + if (!string.IsNullOrWhiteSpace(libationFiles) && !Path.IsPathRooted(libationFiles)) + { + var appSettingsDir = Path.GetDirectoryName(appsettingsPath.Path); + var basePath = !string.IsNullOrEmpty(appSettingsDir) ? appSettingsDir : Configuration.ProcessDirectory; + libationFiles = Path.GetFullPath(libationFiles, basePath); + } + return libationFiles; static string? runShellCommand(string command)