Пример #1
0
 void ILogCollector.SubmitMessage(SyslogMessage message)
 {
     using (StreamWriter sw = new StreamWriter(File.Open(_absoluteFilePath, FileMode.Append, FileAccess.Write, FileShare.Write)))
     {
         sw.WriteLine(message.ToRfc5424String());
     }
 }
Пример #2
0
        public void SubmitMessage(SyslogMessage message)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            if (RemoteEndPoint == null)
            {
                if (_port == 0)
                {
                    _port = InChannels.SyslogUdpReceiver.DEFAULT_PORT;
                }

                if (_remoteAddr == null)
                {
                    throw new InvalidOperationException("Logger is not configured");
                }

                lock (this)
                {
                    if (RemoteEndPoint == null)
                    {
                        RemoteEndPoint = new IPEndPoint(_remoteAddr, _port);
                    }
                }
            }

            if (_client == null)
            {
                lock (this)
                {
                    if (_client == null)
                    {
                        _client = new UdpClient(RemoteEndPoint.AddressFamily);
                    }
                }
            }

            byte[] payload = Encoding.UTF8.GetBytes(message.ToRfc5424String());
            try
            {
                _result = _client.BeginSend(payload, payload.Length, RemoteEndPoint, null, null);
            }
            catch (IOException)
            {
            }
            catch (SocketException)
            {
            }
            catch (Exception ex)
            {
                throw new LogbusException("Unable to send Syslog message", ex);
            }
        }
Пример #3
0
        void ILayout.Format(TextWriter writer, LoggingEvent loggingEvent)
        {
            SyslogSeverity severity;
            int            level = loggingEvent.Level.Value;

            if (level <= Level.Debug.Value)
            {
                severity = SyslogSeverity.Debug;
            }
            else if (level <= Level.Info.Value)
            {
                severity = SyslogSeverity.Info;
            }
            else if (level <= Level.Notice.Value)
            {
                severity = SyslogSeverity.Notice;
            }
            else if (level <= Level.Warn.Value)
            {
                severity = SyslogSeverity.Warning;
            }
            else if (level <= Level.Error.Value)
            {
                severity = SyslogSeverity.Error;
            }
            else if (level <= Level.Critical.Value)
            {
                severity = SyslogSeverity.Critical;
            }
            else if (level <= Level.Alert.Value)
            {
                severity = SyslogSeverity.Alert;
            }
            else
            {
                severity = SyslogSeverity.Emergency;
            }

            SyslogMessage message = new SyslogMessage(Dns.GetHostName(), SyslogFacility.User, severity,
                                                      loggingEvent.MessageObject.ToString())
            {
                MessageId = "log4net",
                ProcessID =
                    Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture),
                ApplicationName = Process.GetCurrentProcess().ProcessName
            };

            writer.WriteLine(message.ToRfc5424String());
        }
        public void TestMulticast()
        {
            AutoResetEvent complete = new AutoResetEvent(false);

            using (SyslogMulticastReceiver target = new SyslogMulticastReceiver())
            {
                target.Log            = new SimpleLogImpl(new NullCollector());
                target.MulticastGroup = new IPAddress(new byte[] { 236, 13, 2, 86 });

                target.Start();
                target.MessageReceived += delegate(object sender, SyslogMessageEventArgs e)
                {
                    if (e.Message.MessageId == "UNIT_TEST")
                    {
                        complete.Set();
                    }
                };
                target.ParseError += delegate {
                    Assert.Fail("Error decoding Syslog message");
                };

                target.Error += delegate {
                    Assert.Fail("Error in test object");
                };

                SyslogMessage msg = new SyslogMessage("localhost", SyslogFacility.Local0, SyslogSeverity.Notice, "Hello")
                {
                    MessageId = "UNIT_TEST"
                };
                byte[] payload = Encoding.UTF8.GetBytes(msg.ToRfc5424String());

                using (UdpClient client = new UdpClient {
                    MulticastLoopback = false
                })
                {
                    client.Connect(target.MulticastGroup, target.Port);
                    client.Send(payload, payload.Length);
                }

                if (!complete.WaitOne(3000))
                {
                    Assert.Fail("Multicast listener didn't receive the Syslog datagram");
                }
            }
        }
Пример #5
0
 public void SubmitMessage(SyslogMessage message)
 {
     Tc.WriteLine(message.ToRfc5424String());
 }