示例#1
0
        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();
        }
示例#2
0
        public void TestWriteNullEventLogEntryToSyslog()
        {
            var mockSyslogMessageWriter = new Mock <ISyslogMessageWriter>(MockBehavior.Loose);

            var syslogWriter = new EventLogSyslogWriter(mockSyslogMessageWriter.Object);

            Assert.DoesNotThrow(() => syslogWriter.WriteEntry(null));
        }
示例#3
0
        /// <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);
        }