Merge pull request #1311 from Mbucari/master

Fix serilog dynamic assembly loading issue (#1310)
This commit is contained in:
rmcrackan 2025-07-22 10:18:33 -04:00 committed by GitHub
commit 829b35c5a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 1 deletions

View File

@ -118,6 +118,7 @@ namespace FileLiberator
} }
catch when (cancellationToken.IsCancellationRequested) catch when (cancellationToken.IsCancellationRequested)
{ {
Serilog.Log.Logger.Information("Download/Decrypt was cancelled. {@Book}", libraryBook.LogFriendly());
return new StatusHandler { "Cancelled" }; return new StatusHandler { "Cancelled" };
} }
finally finally

View File

@ -5,6 +5,8 @@ using FileManager;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
using Serilog.Exceptions;
using Serilog.Settings.Configuration;
#nullable enable #nullable enable
namespace LibationFileManager namespace LibationFileManager
@ -15,11 +17,25 @@ namespace LibationFileManager
public void ConfigureLogging() public void ConfigureLogging()
{ {
//pass explicit assemblies to the ConfigurationReaderOptions
//This is a workaround for the issue where serilog will try to load all
//Assemblies starting with "serilog" from the app folder, but it will fail
//if those assemblies are unreferenced.
//This was a problem when migrating from the ZipFile sink to the File sink.
//Upgrading users would still have the ZipFile sink dll in the program
//folder and serilog would try to load it, unsuccessfully.
//https://github.com/serilog/serilog-settings-configuration/issues/406
var readerOptions = new ConfigurationReaderOptions(
typeof(ILogger).Assembly, // Serilog
typeof(LoggerEnrichmentConfigurationExtensions).Assembly, // Serilog.Exceptions
typeof(ConsoleLoggerConfigurationExtensions).Assembly, // Serilog.Sinks.Console
typeof(FileLoggerConfigurationExtensions).Assembly); // Serilog.Sinks.File
configuration = new ConfigurationBuilder() configuration = new ConfigurationBuilder()
.AddJsonFile(SettingsFilePath, optional: false, reloadOnChange: true) .AddJsonFile(SettingsFilePath, optional: false, reloadOnChange: true)
.Build(); .Build();
Log.Logger = new LoggerConfiguration() Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration) .ReadFrom.Configuration(configuration, readerOptions)
.Destructure.ByTransforming<LongPath>(lp => lp.Path) .Destructure.ByTransforming<LongPath>(lp => lp.Path)
.Destructure.With<LogFileFilter>() .Destructure.With<LogFileFilter>()
.CreateLogger(); .CreateLogger();