From 7342cf1ea739fb80b3a3b37d8e16b177e728c07c Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 14 May 2020 22:27:43 -0400 Subject: [PATCH] Log DD output if possible --- .../Session/SessionControllerFactory.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs index f315c9f335..92a76a973b 100644 --- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs +++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs @@ -84,6 +84,11 @@ namespace Tgstation.Server.Host.Components.Session /// readonly ILoggerFactory loggerFactory; + /// + /// The for the + /// + readonly ILogger logger; + /// /// The for the /// @@ -121,6 +126,7 @@ namespace Tgstation.Server.Host.Components.Session /// The value of . /// The value of . /// The value of + /// The value of . public SessionControllerFactory( IProcessExecutor processExecutor, IByondManager byond, @@ -134,6 +140,7 @@ namespace Tgstation.Server.Host.Components.Session IBridgeRegistrar bridgeRegistrar, IServerPortProvider serverPortProvider, ILoggerFactory loggerFactory, + ILogger logger, Api.Models.Instance instance) { this.processExecutor = processExecutor ?? throw new ArgumentNullException(nameof(processExecutor)); @@ -149,6 +156,7 @@ namespace Tgstation.Server.Host.Components.Session this.bridgeRegistrar = bridgeRegistrar ?? throw new ArgumentNullException(nameof(bridgeRegistrar)); this.serverPortProvider = serverPortProvider ?? throw new ArgumentNullException(nameof(serverPortProvider)); this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); + this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// @@ -220,7 +228,20 @@ namespace Tgstation.Server.Host.Components.Session byondLock.DreamDaemonPath, basePath, arguments, + noShellExecute, + noShellExecute, noShellExecute: noShellExecute); + + if (noShellExecute) + { + // Log DD output + _ = process.Lifetime.ContinueWith( + x => logger.LogTrace( + "DreamDaemon Output:{0}{1}", + Environment.NewLine, process.GetCombinedOutput()), + TaskScheduler.Current); + } + try { networkPromptReaper.RegisterProcess(process);