Compare commits

..

1 Commits

Author SHA1 Message Date
z__
ec1b017946 added nlog custom targets assemblies loading 2022-02-04 14:33:32 +07:00
3 changed files with 37 additions and 7 deletions

View File

@@ -63,9 +63,7 @@ namespace Torch.Server
File.Move(oldTorchCfg, torchCfg, true); File.Move(oldTorchCfg, torchCfg, true);
Target.Register<LogViewerTarget>(nameof(LogViewerTarget)); Target.Register<LogViewerTarget>(nameof(LogViewerTarget));
TorchLogManager.Configuration = new XmlLoggingConfiguration(newNlog); TorchLogManager.SetConfiguration(new XmlLoggingConfiguration(newNlog));
LogManager.Configuration = TorchLogManager.Configuration;
LogManager.ReconfigExistingLoggers();
var config = Persistent<TorchConfig>.Load(torchCfg); var config = Persistent<TorchConfig>.Load(torchCfg);
config.Data.InstanceName = instanceName; config.Data.InstanceName = instanceName;
@@ -84,6 +82,9 @@ namespace Torch.Server
Environment.Exit(1); Environment.Exit(1);
TorchLauncher.Launch(workingDir, binDir); TorchLauncher.Launch(workingDir, binDir);
TorchLogManager.SetConfiguration(TorchLogManager.Configuration,
Environment.GetEnvironmentVariable("TORCH_LOG_EXTENSIONS_PATH") ??
Path.Combine(instancePath, "LoggingExtensions"));
CopyNative(binDir); CopyNative(binDir);
initializer.Run(isService, instanceName, instancePath); initializer.Run(isService, instanceName, instancePath);

View File

@@ -42,9 +42,8 @@ namespace Torch.Patches
private static void FixLogging() private static void FixLogging()
{ {
TorchLogManager.RestoreGlobalConfiguration();
_setLogger(null, LogManager.GetLogger("GameAnalytics")); _setLogger(null, LogManager.GetLogger("GameAnalytics"));
if (LogManager.Configuration is not XmlLoggingConfiguration)
LogManager.Configuration = TorchLogManager.Configuration;
} }
private static bool PatchLogger() private static bool PatchLogger()

View File

@@ -1,8 +1,38 @@
using NLog.Config; using System;
using System.IO;
using System.Runtime.Loader;
using NLog;
using NLog.Config;
namespace Torch.Utils; namespace Torch.Utils;
public static class TorchLogManager public static class TorchLogManager
{ {
public static LoggingConfiguration Configuration { get; set; } private static readonly AssemblyLoadContext LoadContext = new("TorchLog");
public static LoggingConfiguration Configuration { get; private set; }
public static void SetConfiguration(LoggingConfiguration configuration, string extensionsDir = null)
{
Configuration = configuration;
LogManager.Setup()
.SetupExtensions(builder =>
{
if (extensionsDir is null || !Directory.Exists(extensionsDir))
return;
foreach (var file in Directory.EnumerateFiles(extensionsDir, "*.dll", SearchOption.AllDirectories))
{
builder.RegisterAssembly(LoadContext.LoadFromAssemblyPath(file));
}
})
.SetupLogFactory(builder => builder.SetThrowConfigExceptions(true))
.LoadConfiguration(configuration);
LogManager.ReconfigExistingLoggers();
}
public static void RestoreGlobalConfiguration()
{
LogManager.Configuration = Configuration;
LogManager.ReconfigExistingLoggers();
}
} }