【问题标题】:JBoss AS 7 configure logging to Syslog AppenderJBoss AS 7 配置日志到 Syslog Appender
【发布时间】:2012-05-11 03:09:09
【问题描述】:

在以前的 Jboss 版本中,我能够在 jboss-log4j.xml 中使用以下配置配置 SYSLOG appender:

<appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">
  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
  <param name="Facility" value="LOCAL7"/>
  <param name="FacilityPrinting" value="true"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
  </layout>
</appender>

现在我已经升级到 Jboss AS 7,看起来这应该放在 $JBOSS_HOME/standalone/configuration/standalone.xml 中,但语法不同。

我的问题是:如何配置 Jboss AS 7 以使用 SYSLOG appender?

【问题讨论】:

    标签: logging log4j jboss7.x syslog rsyslog


    【解决方案1】:

    log4j 在 JBoss AS 7 中不再使用,因为没有 syslog appender。如果你想要类似的东西,你必须找到或开发一个自定义的java.util.logging.Handler

    一旦创建了处理程序,最好将其设为模块。假设处理程序被称为com.example.logging.SysLogHandler。在$JBOSS_HOME/modules 中创建一个名为com/example/logging/main 的目录。在该目录中放置您的库并创建一个 module.xml 文件,请参阅另一个模块以获取示例。

    module.xml 示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="com.example.logging">
        <resources>
            <resource-root path="sys-log.jar"/>
        </resources>
        <dependencies>
             <!-- Insert any dependencies here like the example below -->
             <!-- <module name="org.jboss.logmanager"/> -->
        </dependencies>
    </module>
    

    您现在可以编辑 standalone.xml 以添加自定义处理程序。

    <subsystem xmlns="urn:jboss:domain:logging:1.1">
        ...
        <!-- A syslog handler -->
        <custom-handler name="syslog" class="com.example.logging.SysLogHandler" module="com.example.logging">
            <level name="INFO"/>
            <formatter>
                <pattern-formatter pattern="%d{MMM dd HH:mm:ss} %-5p [%c] (%t) %s%n"/>
            </formatter>
            <properties>
                <!-- Set any properties that can accessed through setter methods -->
                <property name="autoFlush" value="true"/>
            </properties>
        </custom-handler>
        ...
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="FILE"/>
                <handler name="syslog"/>
            </handlers>
        </root-logger>
    </subsystem>
    

    【讨论】:

    • 在我自己编写/找到一个 Syslog 处理程序后,如何在standalone.xml 中配置它?我把jar文件放在哪里? $JBOSS_HOME/standalone/lib/ext?
    • 你会使用一个`'。我会用一个例子来更新答案。决定把它放在哪里真的取决于你想如何使用它。我会采取的方法可能是让它成为一个模块。
    • 你们打算在 jboss 7 的未来版本中提供一个开箱即用的 syslog appender 吗?
    • @feniix 目前还没有具体的计划,但是如果我们能找到时间,我们正在考虑。它将被添加到 JBoss 日志管理器中,以便使用日志管理器的任何人都可以使用它。
    • JBoss AS 7.2/EAP 6 添加了 syslog-handler。见details
    【解决方案2】:

    这是一个简单的 LogHandler 实现,它简单地委托给 log4j SyslogAppender。 http://randomtekkstuff.blogspot.in/2013/03/jboss-as-7-syslog-handler.html。可 部署为 jboss 模块

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,从上面的答案开始,我自己实现了一个版本。连同配置文件,您可以在Github找到我的解决方案

      【讨论】:

        【解决方案4】:

        从 JBoss AS 的 7.2.x 版本开始,您可以使用来自 Log4j 的旧式 Appender。

        详情请见https://issues.jboss.org/browse/AS7-4925

        【讨论】:

          【解决方案5】:

          JBoss AS 7.2 有 syslog 处理程序,因此您可以使用:

          <syslog-handler name="SYSLOG">
              <level name="DEBUG" />
              <server-address value="<syslog.server>"/>
              <port value="<syslog.port>"/>
          </syslog-handler>
          
          ...
          
          <root-logger>
              <handlers>
              ...
                  <handler name="SYSLOG" />
              ...
              </handlers>
          </root-logger>
          

          文档中的更多信息: https://docs.jboss.org/author/display/AS72/Admin+Guide#AdminGuide-sysloghandler

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-15
            • 1970-01-01
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            • 2014-07-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多