/// <summary> /// Initializes the <see cref="AuditLogInstance" /> class. /// </summary> static AuditLogInstance() { IList <IAuditLogWriter> auditLogWriters = new List <IAuditLogWriter>(); try { AuditLogConfiguration auditLogConfiguration = ConfigurationSettings.GetAuditLogConfigurationSection(); if (auditLogConfiguration?.EventLogSettings != null && auditLogConfiguration.EventLogSettings.IsEnabled) { auditLogWriters.Add(new AuditLogEventLogWriter(EventLog.Application)); } if (auditLogConfiguration?.EntityModelSettings != null && auditLogConfiguration.EntityModelSettings.IsEnabled) { auditLogWriters.Add(new AuditLogEntityModelWriter(new AuditLogEntityModelDeleter())); } if (auditLogConfiguration?.SyslogSettings != null && auditLogConfiguration.SyslogSettings.IsEnabled && !string.IsNullOrEmpty(auditLogConfiguration.SyslogSettings.HostName) && auditLogConfiguration.SyslogSettings.Port > 0) { IStreamProvider tcpStreamProvider = new TcpStreamProvider(auditLogConfiguration.SyslogSettings.HostName, auditLogConfiguration.SyslogSettings.Port, true, auditLogConfiguration.SyslogSettings.IsSecure, auditLogConfiguration.SyslogSettings.IgnoreSslErrors); ISyslogMessageSerializer syslogMsgSerializer = new SyslogMessageSerializer(); ISyslogMessageWriter streamWriter = new SyslogStreamWriter(tcpStreamProvider, syslogMsgSerializer); ISyslogMessageWriter queueingMessageWriter = new SyslogQueueingMessageWriter(streamWriter); auditLogWriters.Add(new AuditLogSyslogWriter(queueingMessageWriter)); } } catch (Exception ex) { EventLog.Application.WriteError("AuditLogInstance failed to initialize. Error: {0}.", ex.ToString()); } AuditLogInstanceInternal = new AuditLog(auditLogWriters); }
public void TestSyslogStreamWriterFailingWrite() { var memoryStream = new MemoryStream(); // Setup the mocks var mockRepo = new MockRepository(MockBehavior.Strict); Mock <IStreamProvider> streamProviderMock = mockRepo.Create <IStreamProvider>(); streamProviderMock.Setup(s => s.GetStream()).Returns(memoryStream); streamProviderMock.Setup(s => s.CloseStream()); // Create the message var syslogMessage = new SyslogMessage { Facility = SyslogFacility.ClockDaemon1, Severity = SyslogSeverity.Alert }; Mock <ISyslogMessageSerializer> syslogSerializerMock = mockRepo.Create <ISyslogMessageSerializer>(); syslogSerializerMock.Setup(sm => sm.Serialize(syslogMessage, It.IsAny <Stream>())).Throws <InvalidOperationException>(); // Write a message and see that it fails var streamWriter = new SyslogStreamWriter(streamProviderMock.Object, syslogSerializerMock.Object); Assert.Throws <InvalidOperationException>(() => streamWriter.Write(syslogMessage)); Assert.AreEqual(0, memoryStream.Length); mockRepo.VerifyAll(); }
public void TestSyslogStreamWriterValidWrite() { var memoryStream = new MemoryStream(); // Setup the mocks var mockRepo = new MockRepository(MockBehavior.Strict); Mock <IStreamProvider> streamProviderMock = mockRepo.Create <IStreamProvider>(); streamProviderMock.Setup(s => s.GetStream()).Returns(memoryStream); streamProviderMock.Setup(s => s.Dispose()); string syslogMsg = "Msg" + Guid.NewGuid(); var syslogMessage = new SyslogMessage { Facility = SyslogFacility.ClockDaemon1, Severity = SyslogSeverity.Alert }; Mock <ISyslogMessageSerializer> syslogSerializerMock = mockRepo.Create <ISyslogMessageSerializer>(); syslogSerializerMock.Setup(sm => sm.Serialize(syslogMessage, It.IsAny <Stream>())).Callback <SyslogMessage, Stream>((m, s) => WriteTestDataToStream(s, syslogMsg)); using (var streamWriter = new SyslogStreamWriter(streamProviderMock.Object, syslogSerializerMock.Object)) { streamWriter.Write(syslogMessage); } // Validation memoryStream.Position = 0; var reader = new StreamReader(memoryStream); Assert.AreEqual(syslogMsg, reader.ReadToEnd()); mockRepo.VerifyAll(); }
public void TestSyslogStreamWriterNullMessage() { var mockRepo = new MockRepository(MockBehavior.Loose); Mock <IStreamProvider> streamProviderMock = mockRepo.Create <IStreamProvider>(); Mock <ISyslogMessageSerializer> syslogSerializerMock = mockRepo.Create <ISyslogMessageSerializer>(); var streamWriter = new SyslogStreamWriter(streamProviderMock.Object, syslogSerializerMock.Object); Assert.Throws <ArgumentNullException>(() => streamWriter.Write(null)); }
/// <summary> /// Get the syslog writer. /// </summary> /// <returns>The syslog writer.</returns> public static IEventLogWriter GetSyslogEventLogWriter() { DiagnosticsConfiguration diagnosticsConfiguration = ConfigurationSettings.GetDiagnosticsConfigurationSection(); EventLogSyslogSettings syslogSettings = diagnosticsConfiguration?.SyslogSettings; if (syslogSettings == null || !syslogSettings.IsEnabled || string.IsNullOrEmpty(syslogSettings.HostName) || syslogSettings.Port <= 0) { return(null); } int enterpriseId = 0; string applicationName = string.Empty; 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; } string databaseName = string.Empty; string databaseServer = string.Empty; var databaseConfiguration = ConfigurationSettings.GetDatabaseConfigurationSection(); if (databaseConfiguration?.ConnectionSettings != null) { databaseName = databaseConfiguration.ConnectionSettings.Database; databaseServer = databaseConfiguration.ConnectionSettings.Server; } IStreamProvider tcpStreamProvider = new TcpStreamProvider(syslogSettings.HostName, syslogSettings.Port, true, syslogSettings.IsSecure, syslogSettings.IgnoreSslErrors); ISyslogMessageSerializer syslogMsgSerializer = new SyslogMessageSerializer(); ISyslogMessageWriter streamWriter = new SyslogStreamWriter(tcpStreamProvider, syslogMsgSerializer); ISyslogMessageWriter queueingMessageWriter = new SyslogQueueingMessageWriter(streamWriter, 0); return(new EventLogSyslogWriter(queueingMessageWriter) { EnterpriseId = enterpriseId, ApplicationName = applicationName, SoftwareVersion = SystemInfo.PlatformVersion, ErrorEnabled = syslogSettings.ErrorEnabled, WarningEnabled = syslogSettings.WarningEnabled, InformationEnabled = syslogSettings.InformationEnabled, TraceEnabled = syslogSettings.TraceEnabled, InstallFolder = SystemInfo.InstallFolder, DatabaseName = databaseName, DatabaseServer = databaseServer }); }