JBoss AS 7配置了对Syslog Appender的日志记录

时间:2012-05-01 15:48:14

标签: logging log4j jboss7.x syslog rsyslog

在以前的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?

5 个答案:

答案 0 :(得分:8)

在JBoss AS 7中不再使用log4j,因为没有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>

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

找到我的解决方案

答案 3 :(得分:0)

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

有关详细信息,请参阅https://issues.jboss.org/browse/AS7-4925

答案 4 :(得分:0)

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