【问题标题】:Log4net RemoteSyslogAppender adding <14> to all messageLog4net RemoteSyslogAppender 将 <14> 添加到所有消息
【发布时间】:2015-05-08 21:13:37
【问题描述】:

我正在使用带有 RemoteSyslogAppender 的 log4net 将日志发送到 logstash/elasticsearch。 appender 会自动在消息前添加“”,从而无法对堆栈跟踪进行分组。

在 log4net 发送的每条消息中,此数字位于标识值之前。我尝试添加具有空值的“身份”标签,该标签已删除消息的“身份”,但 仍然存在。

<identity value=""/>

这是我当前的 appender 配置

<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender" >
  <identity value="somemessage" />
  <param name="RemoteAddress" value="10.3.145.130" />
  <param name="RemotePort" value="5140" />
  <layout type="log4net.Layout.PatternLayout, log4net">
    <param name="ConversionPattern" value="%-5level - %message%newline" />
  </layout>
</appender>

使用这种配置,我仍然会在“身份”值(一些消息)之前得到

"message" => "<14>somemessage:    at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)",

logstash 配置在这里无关紧要,但如果有帮助,我可以稍后包含它,我现在使用 {%GREEDYDATA},一旦我弄清楚如何对它们进行分组,我将努力正确解析它。

谢谢

【问题讨论】:

    标签: elasticsearch log4net logstash logstash-configuration


    【解决方案1】:

    正如RemoteSyslogAppender documentation 所述,它实现了一个用于BSD syslog 协议的客户端,在RFC 3164 中定义。 &lt;14&gt; 字符串是该协议的一部分,描述了消息的功能和严重性,即系统的哪个部分发出了消息以及它的重要性。有关完整说明,请参阅 §4.1.1。

    您可以使用 grok 删除或提取此值,例如像这样:

    filter {
      grok {
        match => ["message", "<%{INT}>%{GREEDYDATA:message}"]
        overwrite => ["message"]
      }
    }
    

    如果您想将数值转换为人类可读的值,您可以使用syslog_pri filter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多