public void TestWriteEventLogEntryToSyslog(EventLogLevel severity) { var mockSyslogMessageWriter = new Mock <ISyslogMessageWriter>(MockBehavior.Strict); var syslogWriter = new EventLogSyslogWriter(mockSyslogMessageWriter.Object) { InstallFolder = @"C:\InstallFolder", ApplicationName = "AppName", DatabaseName = "DbName", DatabaseServer = "DbServerName", EnterpriseId = 11111, SoftwareVersion = "1.0", ErrorEnabled = severity == EventLogLevel.Error, InformationEnabled = severity == EventLogLevel.Information, WarningEnabled = severity == EventLogLevel.Warning, TraceEnabled = severity == EventLogLevel.Trace }; var logEntry = new EventLogEntry(Guid.NewGuid(), DateTime.Now, Stopwatch.GetTimestamp(), severity, "MachineName", "ProcessName", 10, "MsgSource", "Test Message", 5555, "FRED", "Bob"); mockSyslogMessageWriter.Setup(w => w.Write(It.Is <SyslogMessage>(m => ValidateMessage(syslogWriter, m, logEntry)))); syslogWriter.WriteEntry(logEntry); mockSyslogMessageWriter.VerifyAll(); }
public void TestWriteNullEventLogEntryToSyslog() { var mockSyslogMessageWriter = new Mock <ISyslogMessageWriter>(MockBehavior.Loose); var syslogWriter = new EventLogSyslogWriter(mockSyslogMessageWriter.Object); Assert.DoesNotThrow(() => syslogWriter.WriteEntry(null)); }
/// <summary> /// Validates the message. /// </summary> /// <param name="syslogWriter"></param> /// <param name="message">The message.</param> /// <param name="logEntry">The event log data.</param> /// <returns></returns> private bool ValidateMessage(EventLogSyslogWriter syslogWriter, SyslogMessage message, EventLogEntry logEntry) { SyslogSeverity severity; switch (logEntry.Level) { case EventLogLevel.Error: severity = SyslogSeverity.Error; break; case EventLogLevel.Warning: severity = SyslogSeverity.Warning; break; case EventLogLevel.Information: severity = SyslogSeverity.Informational; break; case EventLogLevel.Trace: severity = SyslogSeverity.Debug; break; default: throw new ArgumentException("logEntry"); } Assert.AreEqual(1, message.Version, "The version is incorrect."); Assert.AreEqual(SyslogFacility.UserLevelMessages, message.Facility, "The facility is incorrect"); Assert.AreEqual(severity, message.Severity, "The severity is incorrect"); Assert.AreEqual(syslogWriter.ApplicationName, message.AppName, "The app name is incorrect"); Assert.AreEqual(logEntry.Machine, message.HostName, "The host name is incorrect"); Assert.AreEqual(logEntry.Process, message.ProcId, "The process id is incorrect"); Assert.AreEqual(logEntry.Message, message.Message, "The message is incorrect"); Assert.AreEqual("eventLog", message.MsgId, "The message id is invalid"); Assert.AreEqual(3, message.StructuredDataElements.Count, "The number of structured data elements is invalid"); Assert.AreEqual("eventLog@" + syslogWriter.EnterpriseId, message.StructuredDataElements[0].SdId); Assert.AreEqual("msgId", message.StructuredDataElements[0].Parameters[0].Name); Assert.AreEqual("eventLog", message.StructuredDataElements[0].Parameters[0].Value); Assert.AreEqual("tenant", message.StructuredDataElements[0].Parameters[1].Name); Assert.AreEqual(logEntry.TenantName, message.StructuredDataElements[0].Parameters[1].Value); Assert.AreEqual("tenantId", message.StructuredDataElements[0].Parameters[2].Name); Assert.AreEqual(logEntry.TenantId.ToString(CultureInfo.InvariantCulture), message.StructuredDataElements[0].Parameters[2].Value); Assert.AreEqual("user", message.StructuredDataElements[0].Parameters[3].Name); Assert.AreEqual(logEntry.UserName, message.StructuredDataElements[0].Parameters[3].Value); Assert.AreEqual("logEntrySource", message.StructuredDataElements[0].Parameters[4].Name); Assert.AreEqual(logEntry.Source, message.StructuredDataElements[0].Parameters[4].Value); Assert.AreEqual("threadId", message.StructuredDataElements[0].Parameters[5].Name); Assert.AreEqual(logEntry.ThreadId.ToString(CultureInfo.InvariantCulture), message.StructuredDataElements[0].Parameters[5].Value); Assert.AreEqual("systemInfo@" + syslogWriter.EnterpriseId, message.StructuredDataElements[1].SdId); Assert.AreEqual("installDirectory", message.StructuredDataElements[1].Parameters[0].Name); Assert.AreEqual(syslogWriter.InstallFolder.Replace("\\", "/"), message.StructuredDataElements[1].Parameters[0].Value); Assert.AreEqual("databaseName", message.StructuredDataElements[1].Parameters[1].Name); Assert.AreEqual(syslogWriter.DatabaseName, message.StructuredDataElements[1].Parameters[1].Value); Assert.AreEqual("databaseServer", message.StructuredDataElements[1].Parameters[2].Name); Assert.AreEqual(syslogWriter.DatabaseServer, message.StructuredDataElements[1].Parameters[2].Value); Assert.AreEqual(SyslogOriginConstants.Origin, message.StructuredDataElements[2].SdId); return(true); }