Ejemplo n.º 1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="AuditLogSyslogWriter" /> class.
        /// </summary>
        /// <param name="syslogMessageWriter">The syslog message writer.</param>
        /// <exception cref="System.ArgumentNullException">syslogMessageWriter</exception>
        public AuditLogSyslogWriter(ISyslogMessageWriter syslogMessageWriter)
        {
            if (syslogMessageWriter == null)
            {
                throw new ArgumentNullException(nameof(syslogMessageWriter));
            }

            _syslogMessageWriter = syslogMessageWriter;

            SyslogConfiguration syslogConfiguration = ConfigurationSettings.GetSyslogConfigurationSection();

            if (syslogConfiguration?.SyslogApplicationSettings != null)
            {
                _enterpriseId    = syslogConfiguration.SyslogApplicationSettings.EnterpriseId;
                _applicationName = syslogConfiguration.SyslogApplicationSettings.ApplicationName;
            }

            // Fallback
            if (_enterpriseId == 0)
            {
                _enterpriseId = SyslogReadiNowConstants.EnterpriseId;
            }

            if (string.IsNullOrEmpty(_applicationName))
            {
                _applicationName = SyslogReadiNowConstants.ApplicationName;
            }

            _databaseName   = string.Empty;
            _databaseServer = string.Empty;
            var databaseConfiguration = ConfigurationSettings.GetDatabaseConfigurationSection();

            if (databaseConfiguration?.ConnectionSettings != null)
            {
                _databaseName   = databaseConfiguration.ConnectionSettings.Database;
                _databaseServer = databaseConfiguration.ConnectionSettings.Server;
            }

            _processName = Process.GetCurrentProcess().MainModule.ModuleName;
            _hostName    = GetHostName();

            try
            {
                _ipHostEntry = Dns.GetHostEntry(Dns.GetHostName());
            }
            catch
            {
                // ignored
            }

            if (!string.IsNullOrEmpty(SystemInfo.InstallFolder))
            {
                _installFolder = SystemInfo.InstallFolder.Replace("\\", "/");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="syslogWriter">The syslog writer.</param>
        public EventLogSyslogWriter(ISyslogMessageWriter syslogWriter)
        {
            if (syslogWriter == null)
            {
                throw new ArgumentNullException(nameof(syslogWriter));
            }

            _syslogWriter = syslogWriter;
            try
            {
                _ipHostEntry = Dns.GetHostEntry(Dns.GetHostName());
            }
            catch
            {
                // ignored
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="SyslogQueueingMessageWriter" /> class.
        /// </summary>
        /// <param name="messageWriter">The message writer.</param>
        /// <param name="maxRetries">The maximum retries.</param>
        /// <exception cref="System.ArgumentNullException">messageSender</exception>
        public SyslogQueueingMessageWriter(ISyslogMessageWriter messageWriter, int maxRetries = MaxRetries)
        {
            if (messageWriter == null)
            {
                throw new ArgumentNullException(nameof(messageWriter));
            }

            _messageWriter = messageWriter;
            _maxRetries    = maxRetries;

            if (_maxRetries > MaxRetries)
            {
                _maxRetries = MaxRetries;
            }

            CancellationToken cancellationToken = _cancellationTokenSource.Token;

            // Start listening for messages
            _msgWriterTask = Task.Run(() =>
            {
                try
                {
                    foreach (SyslogMessage message in _messageQueue.GetConsumingEnumerable(cancellationToken))
                    {
                        WriteWithRetry(message);

                        if (cancellationToken.IsCancellationRequested)
                        {
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    _canWriteMessages = false;
                    Trace.TraceError("An unexpected error occurred in the syslog message writer worker thread. No more messages will be written to the syslog server. Error:{0}.", ex);
                }
            }, _cancellationTokenSource.Token);


            // Register an action with the application exist rendezvous point so that any messages will be flushed.
            RendezvousPoint.RegisterAction(WellKnownRendezvousPoints.ApplicationExit, () => Dispose(true));
        }