From c3398735a7584accbbad7721913d10d2c1ff059b Mon Sep 17 00:00:00 2001 From: AqpAnaciy <101519462+aqpanaciy@users.noreply.github.com> Date: Mon, 30 Mar 2026 19:11:37 +0300 Subject: [PATCH 1/2] Using the Environment.UserInteractive - add to log build configuration and last commit hash; - disable console logging when a process is started as a service. --- src/Perpetuum.Bootstrapper/Modules/LoggersModule.cs | 6 +++++- src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Perpetuum.Bootstrapper/Modules/LoggersModule.cs b/src/Perpetuum.Bootstrapper/Modules/LoggersModule.cs index 50437eb8..0f66523a 100644 --- a/src/Perpetuum.Bootstrapper/Modules/LoggersModule.cs +++ b/src/Perpetuum.Bootstrapper/Modules/LoggersModule.cs @@ -100,7 +100,11 @@ protected override void Load(ContainerBuilder builder) } }; - return new CompositeLogger(fileLogger, new ColoredConsoleLogger(formater)); + if (Environment.UserInteractive) + { + return new CompositeLogger(fileLogger, new ColoredConsoleLogger(formater)); + } + return new CompositeLogger(fileLogger); }).As>(); _ = builder.RegisterType(); diff --git a/src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs b/src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs index 2cf07914..c3fbe266 100644 --- a/src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs +++ b/src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs @@ -60,6 +60,7 @@ using Perpetuum.Zones.Terrains.Terraforming; using SharpOpenNat; using System.Numerics; +using System.Reflection; using System.Runtime; using System.Runtime.Caching; using System.Runtime.Versioning; @@ -157,6 +158,15 @@ public void Init(string gameRoot) throw new InvalidOperationException(message); } + // Get last commit hash + var version = Assembly.GetEntryAssembly() + ?.GetCustomAttribute() + ?.InformationalVersion; +#if DEBUG + Logger.Warning($"DEBUG Version: {version}, UserInteractive: {Environment.UserInteractive}"); +#else + Logger.Info($"RELEASE Version: {version}, UserInteractive: {Environment.UserInteractive}"); +#endif Logger.Info($"Game root: {config.GameRoot}"); Logger.Info($"GC isServerGC: {GCSettings.IsServerGC}"); Logger.Info($"GC Latency mode: {GCSettings.LatencyMode}"); From 46f488c181b4d6b4e1bf351123026778bc7eab51 Mon Sep 17 00:00:00 2001 From: AqpAnaciy <101519462+aqpanaciy@users.noreply.github.com> Date: Wed, 23 Sep 2026 11:02:49 +0300 Subject: [PATCH 2/2] Synchronize ColoredConsoleLogger - added locking to ColoredConsoleLogger to prevent interleaved console output and message coloring. --- .../Log/Loggers/ColoredConsoleLogger.cs | 38 +++++++++---------- src/Perpetuum/Log/Loggers/ConsoleLogger.cs | 2 +- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/Perpetuum/Log/Loggers/ColoredConsoleLogger.cs b/src/Perpetuum/Log/Loggers/ColoredConsoleLogger.cs index eea6d253..5443635e 100644 --- a/src/Perpetuum/Log/Loggers/ColoredConsoleLogger.cs +++ b/src/Perpetuum/Log/Loggers/ColoredConsoleLogger.cs @@ -3,6 +3,7 @@ namespace Perpetuum.Log.Loggers public class ColoredConsoleLogger : ConsoleLogger { private readonly ConsoleColor _defaultColor = Console.ForegroundColor; + private readonly object _lock = new object(); public ColoredConsoleLogger(ILogEventFormatter formatter) : base(formatter) { @@ -10,31 +11,28 @@ public ColoredConsoleLogger(ILogEventFormatter formatter) : ba public override void Log(LogEvent logEvent) { - try + var message = _formatter.Format(logEvent); + + lock (_lock) { - switch (logEvent.LogType) + try { - case LogType.Warning: - { + switch (logEvent.LogType) + { + case LogType.Warning: Console.ForegroundColor = ConsoleColor.Yellow; break; - } - case LogType.Error: - { - { - Console.ForegroundColor = ConsoleColor.Red; - //Console.Beep(4000, 30); I HAET U GOU OWEI - break; - } - } + case LogType.Error: + Console.ForegroundColor = ConsoleColor.Red; + break; + } + Console.Out.WriteLine(message); + } + finally + { + Console.ForegroundColor = _defaultColor; } - - base.Log(logEvent); - } - finally - { - Console.ForegroundColor = _defaultColor; } } } -} \ No newline at end of file +} diff --git a/src/Perpetuum/Log/Loggers/ConsoleLogger.cs b/src/Perpetuum/Log/Loggers/ConsoleLogger.cs index bcf05bf8..aa61c1eb 100644 --- a/src/Perpetuum/Log/Loggers/ConsoleLogger.cs +++ b/src/Perpetuum/Log/Loggers/ConsoleLogger.cs @@ -4,7 +4,7 @@ namespace Perpetuum.Log.Loggers { public class ConsoleLogger : ILogger where T : ILogEvent { - private readonly ILogEventFormatter _formatter; + protected readonly ILogEventFormatter _formatter; public ConsoleLogger(ILogEventFormatter formatter) {