AppMetrics.Client.Tracker.ReportSystemInfo C# (CSharp) Method

ReportSystemInfo() private method

private ReportSystemInfo ( ) : void
return void
        void ReportSystemInfo()
        {
            lock (Sync)
            {
                if (_systemInfoIsReported)
                    return;
                _systemInfoIsReported = true;
            }

            try
            {
                Log("System_OsVersion", Environment.OSVersion.VersionString);

                Log("System_ComputerName", Environment.MachineName);
                Log("System_UserName", Environment.UserName);

                Log("System_ClrVersion", Environment.Version.ToString());

                if (IsUnderMono)
                {
                    Log("System_MonoRuntimeVersion", GetMonoRuntimeVersion());
                }

                if (!IsUnderMono)
                {
                    var memInfo = SafeNativeMethods.GetMemoryStatus();
                    Log("System_PhysicalMemory", ToMegabytes(memInfo.ullTotalPhys));
                    Log("System_VirtualMemory", ToMegabytes(memInfo.ullTotalVirtual));
                }
                else
                {
                    using (var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory"))
                    {
                        Log("System_PhysicalMemory", ToMegabytes((ulong)pc.RawValue));
                    }
                }

                Log("System_CurrentCulture", Thread.CurrentThread.CurrentCulture.Name);
                Log("System_CurrentUiCulture", Thread.CurrentThread.CurrentUICulture.Name);

                Log("System_SystemDefaultEncoding", Encoding.Default.WebName);

                Log("System_CalendarType", CultureInfo.CurrentCulture.Calendar.GetType().Name);

                Log("System_NumberDecimalSeparator", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);

                var timeZone = TimeZone.CurrentTimeZone;
                Log("System_TimeZone", timeZone.StandardName);

                var offset = timeZone.GetUtcOffset(DateTime.Now);
                Log("System_TimeZoneOffset", offset.TotalHours);

                var processFile = AppDomain.CurrentDomain.BaseDirectory + AppDomain.CurrentDomain.FriendlyName;
                Log("Client_ProcessName", processFile);

                var processVersion = FileVersionInfo.GetVersionInfo(processFile).FileVersion;
                Log("Client_ProcessVersion", processVersion);

                var curAssembly = GetType().Assembly;
                Log("Client_AppMetricsVersion", curAssembly.FullName);
            }
            catch (Exception exc)
            {
                Log(exc);
            }
        }