JBoss server.log 输出自定义

Posted

技术标签:

【中文标题】JBoss server.log 输出自定义【英文标题】:JBoss server.log output customization 【发布时间】:2012-07-22 12:53:03 【问题描述】:

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

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

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

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

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

有人知道我该怎么做吗?

提前致谢

更新

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

【问题讨论】:

【参考方案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="%dHH: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 创建附加程序和类别过滤器

问候

【讨论】:

只是补充一下,您也可以使用 JBoss Logging。这就是服务器使用的。 我没有添加任何日志记录工具。它的默认值。是的,我有独立安装 这些日志语句来自您的应用程序吗? 是的,图中显示的是 System.out 和 .err 语句。但也有其他来自 JBoss 的信息,例如部署信息、身份验证失败等...... 非常感谢您的帮助。经过深思熟虑,我创建了自己的日志记录工具,我对结果非常满意。当我找到一些空闲时间时,我也会将其发布为答案。结果是这样的:11:35:29,907 INFO [stdout] (http--0.0.0.0-7001-16) [mywar, JavaMailClass]->连接到服务器,现在发送电子邮件:.....跨度>

以上是关于JBoss server.log 输出自定义的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot jars 作为 JBoss EAP 7.0 中的自定义模块

JBoss resteasy - 自定义 Jackson 提供程序

Tomcat 7/JBoss7 的自定义会话 ID 生成器

在 JBoss EAP 中使用自定义 JGroups 模块

CentOS7和CentOs6添加自定义service的区别

自定义 LoginModule 可以是有状态的 ejb 吗?