Log4j2 SyslogAppender TCP到syslog-ng

时间:2015-04-22 08:03:43

标签: log4j2 syslog-ng

我想使用log4j2将我的日志消息发送到syslog服务器(在我的情况下是syslog-ng)。 我现在有两个问题

如果我停止syslog服务,并启动我的应用程序,则说

2015-04-22 09:56:14,582 ERROR TcpSocketManager (TCP:192.168.0.81:1000)   java.net.ConnectException:

从那时起,我的应用程序挂起,直到抛出异常并且我的应用程序崩溃。

2015-04-22 09:59:21,064 ERROR Unable to write to stream TCP:192.168.0.81:1000 for appender RFC5424

我想要的是log4j尝试发送logmessage,如果服务器不可用,它应该缓冲它,直到服务器再次可用(这有可能吗?,我认为immediateFail = false应该这样做)这是我的第二个问题。

如果我启动我的应用程序(使用syslog-ng)然后我会在一段时间后停止它并再次启动它。它没有重新连接(编辑:确定它过了一段时间,但丢失了很多logmessages)。

这是我的log42.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyAppx" packages="">
<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout
            pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
    </Console>
    <Syslog name="RFC5424" format="RFC5424" host="192.168.0.81" port="1000"
    protocol="TCP" appName="app" mdcId="mdc" includeMDC="true"
    facility="LOCAL0" enterpriseNumber="18060" newLine="true" immediateFail="false"
    messageId="Audit" id="App" ignoreExceptions="true"/>
</Appenders>
<Loggers>
    <Root level="trace">
        <AppenderRef ref="STDOUT" />
        <AppenderRef ref="RFC5424" />
    </Root>
</Loggers>

我对其他解决方案持开放态度,但我想要的是根本没有丢失logmessage。迟早所有logmessages都应该在中央站点上提供(因为我想使用syslogserver而不是多个本地文件)

0 个答案:

没有答案