コード例 #1
0
ファイル: syslog.cs プロジェクト: pseymour/MakeMeAdmin
        /*
         * /// <summary>
         * /// Writes the specified message to syslog as an information event.
         * /// </summary>
         * /// <param name="message">
         * /// The message to be written.
         * /// </param>
         * /// <param name="messageId">
         * /// Identifies the type of message being sent.
         * /// </param>
         * public void WriteInformationEvent(string message, string messageId)
         * {
         *  SendMessage(message, messageId, SyslogNet.Client.Severity.Informational);
         * }
         *
         * public void WriteWarningEvent(string message, string messageId)
         * {
         *  SendMessage(message, messageId, SyslogNet.Client.Severity.Warning);
         * }
         *
         * public void WriteErrorEvent(string message, string messageId)
         * {
         *  SendMessage(message, messageId, SyslogNet.Client.Severity.Error);
         * }
         */

        /// <summary>
        /// Sends the message to the syslog server.
        /// </summary>
        /// <param name="message">
        /// The text of the message to be sent.
        /// </param>
        /// <param name="messageId">
        /// The message identifier.
        /// </param>
        /// <param name="severity">
        /// The severity of the message.
        /// </param>
        public void SendMessage(string message, string messageId, SyslogNet.Client.Severity severity)
        {
            System.Net.IPHostEntry hostEntry = null;
            try
            {
                hostEntry = System.Net.Dns.GetHostEntry(hostname);
            }
            catch (System.Net.Sockets.SocketException)
            {
                hostEntry = null;
            }

            if (hostEntry == null)
            {
                // TODO: Cache these events.
            }
            else
            {
                SyslogNet.Client.SyslogMessage syslogMessage = new SyslogNet.Client.SyslogMessage(
                    System.DateTimeOffset.Now,
                    SyslogNet.Client.Facility.UserLevelMessages,
                    severity,
                    Settings.FullyQualifiedHostName,
                    AppName,
                    null,
                    messageId,
                    message);

                if (string.Compare(protocol, "TCP", true) == 0)
                {
                    if (HostIsAvailableViaTcp(5))
                    {
                        Sender.Send(syslogMessage, Serializer);
                    }
                    else
                    {
                        // TODO: Cache these events.
                    }
                }
                else if (string.Compare(protocol, "UDP", true) == 0)
                {
                    Sender.Send(syslogMessage, Serializer);
                }
            }
        }
コード例 #2
0
        /*
         * /// <summary>
         * /// Writes the specified message to the event log as an information event
         * /// with the specified event ID.
         * /// </summary>
         * /// <param name="message">
         * /// The message to be written to the log.
         * /// </param>
         * /// <param name="id">
         * /// The event ID to use for the event being written.
         * /// </param>
         * public static void WriteInformationEvent(string message, EventID id)
         * {
         *  log.WriteEntry(message, System.Diagnostics.EventLogEntryType.Information, (int)id);
         *  //System.Diagnostics.EventLogEntryType.
         *
         *  int j = 0;
         *  Task[] tasks = new Task[Settings.SyslogServers.Count];
         *
         *  foreach (SyslogServerInfo serverInfo in Settings.SyslogServers)
         *  {
         *      if (serverInfo.IsValid)
         *      {
         *          Syslog syslog = new Syslog(serverInfo.Hostname, serverInfo.Port, serverInfo.Protocol, serverInfo.RFC);
         *          tasks[j] = Task.Factory.StartNew(() => syslog.SendMessage(message, id.ToString(), SyslogNet.Client.Severity.Informational));
         *      }
         *      j++;
         *  }
         * }
         *
         * /// <summary>
         * /// Writes the specified message to the event log as an error event with the
         * /// specified event ID.
         * /// </summary>
         * /// <param name="message">
         * /// The message to be written to the log.
         * /// </param>
         * /// <param name="id">
         * /// The event ID to use for the event being written.
         * /// </param>
         * public static void WriteErrorEvent(string message, EventID id)
         * {
         *  log.WriteEntry(message, System.Diagnostics.EventLogEntryType.Error, (int)id);
         *
         *  int j = 0;
         *  Task[] tasks = new Task[Settings.SyslogServers.Count];
         *
         *  foreach (SyslogServerInfo serverInfo in Settings.SyslogServers)
         *  {
         *      if (serverInfo.IsValid)
         *      {
         *          Syslog syslog = new Syslog(serverInfo.Hostname, serverInfo.Port, serverInfo.Protocol, serverInfo.RFC);
         *          tasks[j] = Task.Factory.StartNew(() => syslog.SendMessage(message, id.ToString(), SyslogNet.Client.Severity.Error));
         *      }
         *      j++;
         *  }
         * }
         *
         * /// <summary>
         * /// Writes the specified message to the event log as a warning event with the
         * /// specified event ID.
         * /// </summary>
         * /// <param name="message">
         * /// The message to be written to the log.
         * /// </param>
         * /// <param name="id">
         * /// The event ID to use for the event being written.
         * /// </param>
         * public static void WriteWarningEvent(string message, EventID id)
         * {
         *  log.WriteEntry(message, System.Diagnostics.EventLogEntryType.Warning, (int)id);
         *
         *  int j = 0;
         *  Task[] tasks = new Task[Settings.SyslogServers.Count];
         *
         *  foreach (SyslogServerInfo serverInfo in Settings.SyslogServers)
         *  {
         *      if (serverInfo.IsValid)
         *      {
         *          Syslog syslog = new Syslog(serverInfo.Hostname, serverInfo.Port, serverInfo.Protocol, serverInfo.RFC);
         *          tasks[j] = Task.Factory.StartNew(() => syslog.SendMessage(message, id.ToString(), SyslogNet.Client.Severity.Warning));
         *      }
         *      j++;
         *  }
         * }
         */

        /// <summary>
        /// Writes an event to the log.
        /// </summary>
        /// <param name="message">
        /// The message to write to the log.
        /// </param>
        /// <param name="id">
        /// An ID for the type of event being logged.
        /// </param>
        /// <param name="entryType">
        /// The severity of the message being logged (information, warning, etc.).
        /// </param>
        public static void WriteEvent(string message, EventID id, System.Diagnostics.EventLogEntryType entryType)
        {
            log.WriteEntry(message, entryType, (int)id);

            int j = 0;

            Task[] tasks = new Task[Settings.SyslogServers.Count];

            // Determine the syslog severity for this event, based on the event log entry type.
            SyslogNet.Client.Severity severity = SyslogNet.Client.Severity.Informational;
            switch (entryType)
            {
            case System.Diagnostics.EventLogEntryType.Error:
                severity = SyslogNet.Client.Severity.Error;
                break;

            case System.Diagnostics.EventLogEntryType.Warning:
                severity = SyslogNet.Client.Severity.Warning;
                break;

            case System.Diagnostics.EventLogEntryType.FailureAudit:
                severity = SyslogNet.Client.Severity.Alert;
                break;

            case System.Diagnostics.EventLogEntryType.SuccessAudit:
                severity = SyslogNet.Client.Severity.Notice;
                break;

            default:
                break;
            }

            foreach (SyslogServerInfo serverInfo in Settings.SyslogServers)
            {
                if (serverInfo.IsValid)
                {
                    Syslog syslog = new Syslog(serverInfo.Hostname, serverInfo.Port, serverInfo.Protocol, serverInfo.RFC);
                    tasks[j] = Task.Factory.StartNew(() => syslog.SendMessage(message, id.ToString(), severity));
                }
                j++;
            }
        }