Example #1
0
        private void SetupLogging()
        {
            // If there is a configuration file then this will already be set
            if (LogManager.Configuration != null)
            {
                loggingReady = true;
                return;
            }

            var config     = new LoggingConfiguration();
            var fileTarget = new FileTarget
            {
                FileName         = "serverlog.txt",
                ArchiveFileName  = "serverlog.old.txt",
                MaxArchiveFiles  = 1,
                ArchiveAboveSize = 104857600,
                Layout           =
                    @"${longdate} | ${logger} | ${message} ${exception:format=toString,Data:maxInnerExceptionLevel=1}"
            };

            var wrapper = new AsyncTargetWrapper(fileTarget, 5000, AsyncTargetWrapperOverflowAction.Discard);

            config.AddTarget("asyncFileTarget", wrapper);
            config.LoggingRules.Add(new LoggingRule("*", LogLevel.Info, wrapper));

            // only add transmission logging at launch if its enabled, defer rule and target creation otherwise
            if (ServerSettingsStore.Instance.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_ENABLED).BoolValue)
            {
                config = LoggingHelper.GenerateTransmissionLoggingConfig(config,
                                                                         ServerSettingsStore.Instance.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_RETENTION).IntValue);
            }

            LogManager.Configuration = config;
            loggingReady             = true;
        }
Example #2
0
        private void LogCompleteTransmissions()
        {
            while (!_stop)
            {
                Thread.Sleep(500);
                if (_log != !_serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_ENABLED).BoolValue)
                {
                    _log = !_serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_ENABLED).BoolValue;
                    string newSetting = _log ? "TRANSMISSION LOGGING ENABLED" : "TRANSMISSION LOGGING DISABLED";

                    if (_serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_ENABLED).BoolValue &&
                        _fileTarget == null)    // require initialization of transmission logging filetarget and rule
                    {
                        LoggingConfiguration config = LogManager.Configuration;

                        config = LoggingHelper.GenerateTransmissionLoggingConfig(config,
                                                                                 _serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_RETENTION).IntValue);

                        LogManager.Configuration = config;

                        WrapperTargetBase b = (WrapperTargetBase)LogManager.Configuration.FindTargetByName("asyncTransmissionFileTarget");
                        _fileTarget = (FileTarget)b.WrappedTarget;
                    }

                    Logger.Info($"EVENT, {newSetting}");
                }

                if (_serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_ENABLED).BoolValue&&
                    _fileTarget.MaxArchiveFiles != _serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_RETENTION).IntValue)
                {
                    _fileTarget.MaxArchiveFiles = _serverSettings.GetGeneralSetting(ServerSettingsKeys.TRANSMISSION_LOG_RETENTION).IntValue;
                    LogManager.ReconfigExistingLoggers();
                }

                if (_log && !_currentTransmissionLog.IsEmpty)
                {
                    foreach (KeyValuePair <SRClient, TransmissionLog> LoggedTransmission in _currentTransmissionLog)
                    {
                        if (LoggedTransmission.Value.IsComplete())
                        {
                            if (_currentTransmissionLog.TryRemove(LoggedTransmission.Key, out TransmissionLog completedLog))
                            {
                                Logger.Info($"TRANSMISSION, {LoggedTransmission.Key.ClientGuid}, {LoggedTransmission.Key.Name}, " +
                                            $"{LoggedTransmission.Key.Coalition}, {LoggedTransmission.Value.TransmissionFrequency}. " +
                                            $"{completedLog.TransmissionStart}, {completedLog.TransmissionEnd}, {LoggedTransmission.Key.VoipPort}");
                            }
                        }
                    }
                }
            }
        }