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 提供程序