【问题标题】:Java Log4j2 Syslog AppenderJava Log4j2 系统日志附加器
【发布时间】:2016-06-19 14:45:34
【问题描述】:

我正在尝试使用 Log4j 2.6.1 来通过 Syslog 发送日志消息。 我可以将它们打印到文件或控制台,但我似乎无法在我的 Syslog 服务器中捕获它们,或者验证它们是否正在被发送。

我使用的配置文件是基于我在网上找到的,我不确定是否需要使用 BSD Syslog 格式或 RFC 5424。

我在 Windows 服务器上运行(Syslog 服务器位于同一台机器上)。

这是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <Syslog name="syslogAppender" format="RFC5424" host="localhost" newLine="true" port="514" protocol="UDP" appName="MyApp" 
        facility="USER" messageId="Audit" mdcId="mdc" id="App"
        connectTimeoutMillis="1000" reconnectionDelayMillis="5000"/>
  </Appenders>
  <Loggers>
    <Logger name="com.mycorp" level="info" />
        <Root level="error">
            <AppenderRef ref="syslogAppender"/>
        </Root>
  </Loggers>
</Configuration>

课程如下:

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import java.io.*;
import java.sql.SQLException;

public class SyslogLogger
{
    private static final Logger LOG = LogManager.getLogger(SyslogLogger.class);

    public static void main (String[] args)throws IOException,SQLException
    {
        LOG.error("testing ERROR level");
        LOG.trace("exiting application");
    }
}

请指教我做错了什么?

【问题讨论】:

    标签: java logging configuration log4j2


    【解决方案1】:

    我建议为此在 Log4j 2 Jira 问题跟踪器上提出请求。你可能发现了一个错误。

    【讨论】:

      【解决方案2】:

      我有同样的问题,但我通过考虑以下几点解决了它:

      1. 在每条日志消息的末尾添加一个“\0”,但它与我的日志服务器完全相关,服务器对消息使用消除器。
      2. 为 syslog appender 属性添加属性“includeMDC”="true"

      所以 syslog appender 可以正常工作,您应该检查以下可能性:

      1. syslog 服务器配置(例如格式、协议、MDC 和...)
      2. 根据服务器输入格式修改 syslog appender 属性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-22
        • 2013-04-02
        • 2017-08-08
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        • 2014-04-30
        相关资源
        最近更新 更多