/// <summary> /// Gather details about the environment the application is running in /// <param name="includeEnvVars">Indicate whether to include environment varialbles or not.Default is false</param> /// <returns>Returns an instance of ApplicationEnvironment</returns> /// </summary> public static ApplicationEnvironment GetApplicationEnvironment(bool includeEnvVars = false) { ApplicationEnvironment env = new ApplicationEnvironment(); env.ProcessId = Process.GetCurrentProcess().Id; env.ProcessStartTime = Process.GetCurrentProcess().StartTime; env.Hostname = Dns.GetHostName(); #if NETSTANDARD1_6 // Allow OS detection on .NET Core if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { env.Os = "Linux"; } else if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { env.Os = "Windows"; } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { env.Os = "Mac OSX"; } else { env.Os = "Unknown"; } #else OperatingSystem os = Environment.OSVersion; PlatformID platform = os.Platform; switch (platform) { case PlatformID.Unix: env.Os = "Linux/Unix"; break; case PlatformID.Win32NT: env.Os = "Windows"; break; default: env.Os = "Unknown"; break; } env.OsVersion = Environment.OSVersion.Version.ToString(); #endif // Framework detection #if NETSTANDARD1_6 // Use compiler target detection for CoreCLR env.Framework = "CoreCLR"; #else env.Framework = Type.GetType("Mono.Runtime") != null ? "Mono" : ".NET Framework"; #endif if (includeEnvVars) { // Loop over environment variables to escape special characters IDictionary envVars = Environment.GetEnvironmentVariables(); foreach (var envVarKey in envVars.Keys) { string envVarValue = envVars[envVarKey].ToString(); envVarValue = envVarValue.Replace("\\", "\\\\"); envVarValue = envVarValue.Replace('"', '\"'); env.EnvironmentVariables.Add(envVarKey.ToString(), envVarValue); } } // Loop over configuration sources and get their values foreach (var source in AppConfig.Sources.Keys) { env.ApplicationConfiguration.Add(source, AppConfig.GetAllValues(source)); } #if !NETSTANDARD1_6 env.CommandLine = Environment.CommandLine.Replace("\\", "\\\\"); #endif return env; }
/// <summary> /// Gather details about the environment the application is running in /// <param name="includeEnvVars">Indicate whether to include environment varialbles or not.Default is false</param> /// <returns>Returns an instance of ApplicationEnvironment</returns> /// </summary> public static ApplicationEnvironment GetApplicationEnvironment(bool includeEnvVars = false) { ApplicationEnvironment env = new ApplicationEnvironment(); env.ProcessId = Process.GetCurrentProcess().Id; env.ProcessStartTime = Process.GetCurrentProcess().StartTime; env.Hostname = Dns.GetHostName(); #if NETSTANDARD1_6 // Allow OS detection on .NET Core if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { env.Os = "Linux"; } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { env.Os = "Windows"; } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { env.Os = "Mac OSX"; } else { env.Os = "Unknown"; } #else OperatingSystem os = Environment.OSVersion; PlatformID platform = os.Platform; switch (platform) { case PlatformID.Unix: env.Os = "Linux/Unix"; break; case PlatformID.Win32NT: env.Os = "Windows"; break; default: env.Os = "Unknown"; break; } env.OsVersion = Environment.OSVersion.Version.ToString(); #endif // Framework detection #if NETSTANDARD1_6 // Use compiler target detection for CoreCLR env.Framework = "CoreCLR"; #else env.Framework = Type.GetType("Mono.Runtime") != null ? "Mono" : ".NET Framework"; #endif if (includeEnvVars) { // Loop over environment variables to escape special characters IDictionary envVars = Environment.GetEnvironmentVariables(); foreach (var envVarKey in envVars.Keys) { string envVarValue = envVars[envVarKey].ToString(); envVarValue = envVarValue.Replace("\\", "\\\\"); envVarValue = envVarValue.Replace('"', '\"'); env.EnvironmentVariables.Add(envVarKey.ToString(), envVarValue); } } // Loop over configuration sources and get their values foreach (var source in AppConfig.Sources.Keys) { env.ApplicationConfiguration.Add(source, AppConfig.GetAllValues(source)); } #if !NETSTANDARD1_6 env.CommandLine = Environment.CommandLine.Replace("\\", "\\\\"); #endif return(env); }