diff --git a/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs b/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs index f795ce521c..e8e36190cf 100644 --- a/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs +++ b/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs @@ -54,20 +54,29 @@ namespace Tgstation.Server.Host.Configuration /// /// The to use. /// The to use. + /// The to use /// The evaluated log . - public string GetFullLogDirectory(IIOManager ioManager, IAssemblyInformationProvider assemblyInformationProvider) + public string GetFullLogDirectory( + IIOManager ioManager, + IAssemblyInformationProvider assemblyInformationProvider, + IPlatformIdentifier platformIdentifier) { if (ioManager == null) throw new ArgumentNullException(nameof(ioManager)); if (assemblyInformationProvider == null) throw new ArgumentNullException(nameof(assemblyInformationProvider)); + if (platformIdentifier == null) + throw new ArgumentNullException(nameof(platformIdentifier)); + + var directoryToUse = platformIdentifier.IsWindows + ? Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) // C:/ProgramData + : "/var/log"; // :pain: return !String.IsNullOrEmpty(Directory) ? Directory : ioManager.ConcatPath( - Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), // common app data is C:/ProgramData on windows, else /usr/share - assemblyInformationProvider.VersionPrefix, - "Logs"); + directoryToUse, + assemblyInformationProvider.VersionPrefix); } } } diff --git a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs index 7a0219d18f..13b21a8d4c 100644 --- a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs +++ b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs @@ -330,7 +330,7 @@ namespace Tgstation.Server.Host.Controllers [ProducesResponseType(typeof(ErrorMessage), 409)] public async Task ListLogs(CancellationToken cancellationToken) { - var path = fileLoggingConfiguration.GetFullLogDirectory(ioManager, assemblyInformationProvider); + var path = fileLoggingConfiguration.GetFullLogDirectory(ioManager, assemblyInformationProvider, platformIdentifier); try { var files = await ioManager.GetFiles(path, cancellationToken).ConfigureAwait(false); @@ -378,7 +378,7 @@ namespace Tgstation.Server.Host.Controllers throw new ArgumentNullException(nameof(path)); var fullPath = ioManager.ConcatPath( - fileLoggingConfiguration.GetFullLogDirectory(ioManager, assemblyInformationProvider), + fileLoggingConfiguration.GetFullLogDirectory(ioManager, assemblyInformationProvider, platformIdentifier), path); try { diff --git a/src/Tgstation.Server.Host/Core/Application.cs b/src/Tgstation.Server.Host/Core/Application.cs index f07cdee7fa..cad2b6970f 100644 --- a/src/Tgstation.Server.Host/Core/Application.cs +++ b/src/Tgstation.Server.Host/Core/Application.cs @@ -122,7 +122,10 @@ namespace Tgstation.Server.Host.Core if (postSetupServices.FileLoggingConfiguration.Disable) return; - var logPath = postSetupServices.FileLoggingConfiguration.GetFullLogDirectory(IOManager, AssemblyInformationProvider); + var logPath = postSetupServices.FileLoggingConfiguration.GetFullLogDirectory( + IOManager, + AssemblyInformationProvider, + postSetupServices.PlatformIdentifier); var logEventLevel = ConvertSeriLogLevel(postSetupServices.FileLoggingConfiguration.LogLevel);