aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Helpers
diff options
context:
space:
mode:
authorPatrick Barron <barronpm@gmail.com>2023-01-27 18:24:53 -0500
committerPatrick Barron <barronpm@gmail.com>2023-01-27 18:24:53 -0500
commit0df899943f45db9d95b7d7ba07f593dffe98e597 (patch)
tree71199b11f3d0babce531f68affd62cb81776a889 /Jellyfin.Server/Helpers
parent421b062ca423c292d33490f0286925f2f1a0c033 (diff)
Move LogEnvironmentInfo to StartupHelpers
Diffstat (limited to 'Jellyfin.Server/Helpers')
-rw-r--r--Jellyfin.Server/Helpers/StartupHelpers.cs40
1 files changed, 40 insertions, 0 deletions
diff --git a/Jellyfin.Server/Helpers/StartupHelpers.cs b/Jellyfin.Server/Helpers/StartupHelpers.cs
index f1bb9b283..9a1299fe2 100644
--- a/Jellyfin.Server/Helpers/StartupHelpers.cs
+++ b/Jellyfin.Server/Helpers/StartupHelpers.cs
@@ -1,7 +1,10 @@
using System;
+using System.Collections.Generic;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Net;
+using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using System.Threading.Tasks;
@@ -22,6 +25,43 @@ namespace Jellyfin.Server.Helpers;
/// </summary>
public static class StartupHelpers
{
+ private static readonly string[] _relevantEnvVarPrefixes = { "JELLYFIN_", "DOTNET_", "ASPNETCORE_" };
+
+ /// <summary>
+ /// Logs relevant environment variables and information about the host.
+ /// </summary>
+ /// <param name="logger">The logger to use.</param>
+ /// <param name="appPaths">The application paths to use.</param>
+ public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths)
+ {
+ // Distinct these to prevent users from reporting problems that aren't actually problems
+ var commandLineArgs = Environment
+ .GetCommandLineArgs()
+ .Distinct();
+
+ // Get all relevant environment variables
+ var allEnvVars = Environment.GetEnvironmentVariables();
+ var relevantEnvVars = new Dictionary<object, object>();
+ foreach (var key in allEnvVars.Keys)
+ {
+ if (_relevantEnvVarPrefixes.Any(prefix => key.ToString()!.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)))
+ {
+ relevantEnvVars.Add(key, allEnvVars[key]!);
+ }
+ }
+
+ logger.LogInformation("Environment Variables: {EnvVars}", relevantEnvVars);
+ logger.LogInformation("Arguments: {Args}", commandLineArgs);
+ logger.LogInformation("Operating system: {OS}", RuntimeInformation.OSDescription);
+ logger.LogInformation("Architecture: {Architecture}", RuntimeInformation.OSArchitecture);
+ logger.LogInformation("64-Bit Process: {Is64Bit}", Environment.Is64BitProcess);
+ logger.LogInformation("User Interactive: {IsUserInteractive}", Environment.UserInteractive);
+ logger.LogInformation("Processor count: {ProcessorCount}", Environment.ProcessorCount);
+ logger.LogInformation("Program data path: {ProgramDataPath}", appPaths.ProgramDataPath);
+ logger.LogInformation("Web resources path: {WebPath}", appPaths.WebPath);
+ logger.LogInformation("Application directory: {ApplicationPath}", appPaths.ProgramSystemPath);
+ }
+
/// <summary>
/// Create the data, config and log paths from the variety of inputs(command line args,
/// environment variables) or decide on what default to use. For Windows it's %AppPath%