SocketAppender 和 PatternLayout

Gui*_*tue 5 logging log4j appender

我有一个将日志发送到日志服务器存储的记录器。这工作正常,但不使用模式布局。有或没有这不会改变任何事情。我相信记得在某处阅读socketappender使用的是自己的模式而不是其他人的模式。

<appender name="LOGSTASH" class="org.apache.log4j.net.SocketAppender"> 
        <param name="Port" value="5000"/>
        <param name="RemoteHost" value="192.168.81.131"/> 
        <param name="ReconnectionDelay" value="5000"/>
        <param name="LocationInfo" value="true" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
      </layout>
</appender> 
Run Code Online (Sandbox Code Playgroud)

但是在这个文档(和其他一些)中使用这个。此文档中的示例:

<appender name="A1" class="org.apache.log4j.net.SocketAppender">
    <param name="RemoteHost" value="localhost"/>
    <param name="Port" value="5000"/>
    <param name="LocationInfo" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>
    </layout>
    </appender>
Run Code Online (Sandbox Code Playgroud)

那么是不可能在socketappender 中使用个人模式还是我的错?

如果不可能,是否有其他附加程序用于使用自定义模式进行 tcp 日志记录?

Gui*_*tue 2

SocketAppender似乎不使用布局。

SocketAppender 不使用布局。他们将序列化的 LoggingEvent 对象发送到服务器端。

请参阅此处的文档


所以我用一个SyslogAppender来代替。由于未使用的可能性(例如设施和优先级),它并不完美,但工作正常。