1

我开发了一个 servlet,它输出我的 JBoss 7.1 的 server.log 文件,以便于调试。

我想要做的是自定义 JBoss 的输出,并显示每行输出是从哪个 war 生成的。

为了更好地理解,这是一个示例输出:

服务器日志作为 servlet

我还想要输出一些可以识别此输出来自哪个部署的内容。

在每个输出中的 URL 之后,我注意到 7001 端口后面的数字对于每个部署都不同,但不知道如何将其与战争文件相关联....

任何人都知道我该怎么做?

提前致谢

更新

我在网上找到了这个关于配置 JBoss 的http://java.dzone.com/articles/configuring-logging-jboss但很遗憾是另一个版本。这里解释了如何让 log4j 为每个部署创建不同的日志文件。这将是我的最终解决方案。

4

1 回答 1

1

首先,您似乎(从您的日志内容)正在使用 System.out.println 和 System.err.println。

如果您将日志记录切换到 slf4j、log4j、commons-logging,当然还有 jboss-logging(感谢 James)将能够看到您正在从哪个包进行日志记录。

使用适当的日志记录工具后,您可以通过编辑配置文件按类别过滤。

此外,日志记录将显示更具可读性,即:

05:21:42,272 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)

我假设您使用的是 $JBOSS_HOME/standalone/configuration/standalone.xml 中的独立配置

您需要找到日志记录子系统

    <subsystem xmlns="urn:jboss:domain:logging:1.1">

并创建一个类型为periodic-rotating-file-handler 的新appender:

        <periodic-rotating-file-handler name="APPLOG1">
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="applog1.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>

然后添加过滤器:

         <logger category="com.yourapppackage">
            <level name="INFO"/>
            <handler name="APPLOG1"/>
        </logger>

那应该做的工作。

如果我没记错的话,您还可以从管理控制台和 CLI 创建附加程序和类别过滤器

问候

于 2012-07-24T16:31:00.340 回答