Wildfly 8 似乎没有记录 -verbose:class 数据?

Posted

技术标签:

【中文标题】Wildfly 8 似乎没有记录 -verbose:class 数据?【英文标题】:Wildfly 8 doesn't seem to be logging -verbose:class data? 【发布时间】:2016-06-24 11:42:56 【问题描述】:

我正在尝试运行设置了 -verbose:class 标志的 Wildfly 8.1.0,但它似乎没有做任何事情。

在 server.log 的开头附近,它回显了它接收到的 JVM 参数是什么。这是那一行(我添加了换行符以方便阅读)。

2016-03-09 15:55:31,623 DEBUG [org.jboss.as.config] (MSC service thread 1-6) VM Arguments:
-Xms64m -Xmx512m -XX:MaxPermSize=256m 
-verbose:class
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-Djava.net.preferIPv4Stack=true
-Dorg.jboss.resolver.warning=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djboss.server.default.config=cls.xml
-Djboss.home.dir=C:/app/CMS/stdsw/wildfly-8.1.0.Final
-Dorg.jboss.boot.log.file=C:/app/CMS/modules/server/wildfly/cls/log/boot.log 
-Dlogging.configuration=file:C:/app/CMS/modules/server/wildfly/cls/configuration/logging.properties
-Dcls.log.path=C:/app/CMS/modules/server/log
-Djboss.server.base.dir=C:/app/CMS/modules/server/wildfly/cls
-Djboss.log.dir=C:/app/CMS/modules/server/wildfly/cls/log
-Djboss.config.dir=C:/app/CMS/modules/server/wildfly/cls/configuration
-Djboss.server.data.dir=C:/app/CMS/modules/server/wildfly/cls/data
-Djboss.server.log.dir=C:/app/CMS/modules/server/wildfly/cls/log
-Djboss.server.temp.dir=C:/app/CMS/modules/server/wildfly/cls/tmp
-Djboss.server.deploy.dir=C:/app/CMS/modules/server/wildfly/cls/content 

我的理解是,如上所述设置-verbose:class,我应该收到如下消息:

[Opened C:\JDK8\jre\lib\rt.jar]
[Loaded java.lang.Object from C:\Program Files\JDK160~1\jre\lib\rt.jar]

插入我的server.log。他们不在那里。

这是我的日志子系统的内容:

<subsystem xmlns="urn:jboss:domain:logging:2.0">
    <console-handler name="CONSOLE">
        <level name="INFO"/>
        <formatter>
            <named-formatter name="COLOR-PATTERN"/>
        </formatter>
    </console-handler>
    <periodic-rotating-file-handler name="FILE" autoflush="true">
        <formatter>
            <named-formatter name="PATTERN"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="server.log"/>
        <suffix value=".yyyy-MM-dd"/>
        <append value="true"/>
    </periodic-rotating-file-handler>
    <logger category="com.arjuna">
        <level name="WARN"/>
    </logger>
    <logger category="org.apache.tomcat.util.modeler">
        <level name="WARN"/>
    </logger>
    <logger category="org.jboss.as.config">
        <level name="DEBUG"/>
    </logger>
    <logger category="sun.rmi">
        <level name="WARN"/>
    </logger>
    <logger category="jacorb">
        <level name="WARN"/>
    </logger>
    <logger category="jacorb.config">
        <level name="ERROR"/>
    </logger>
    <logger category="com.empolis.ecls.server.j2ee.jca.impl">
        <level name="DEBUG"/>
    </logger>
    <root-logger>
        <level name="DEBUG"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILE"/>
        </handlers>
    </root-logger>
    <formatter name="PATTERN">
        <pattern-formatter pattern="%dyyyy-MM-dd HH:mm:ss,SSS %-5p [%c] (%t) %s%E%n"/>
    </formatter>
    <formatter name="COLOR-PATTERN">
        <pattern-formatter pattern="%Klevel%dHH:mm:ss,SSS %-5p [%c] (%t) %s%E%n"/>
    </formatter>
</subsystem>

【问题讨论】:

你为什么期望这些消息应该出现在日志中?我想你应该在控制台输出中看到它们。我刚刚在控制台“set JAVA_OPTS=-verbose:class”然后“standalone.bat”中做了,我在控制台中看到了大量这样的消息。 您可能会在为org.jboss.modules 添加 TRACE 日志记录之后,因为它将是一个加载加载类的模块化类。 @JamesR.Perkins - 这会给我通往罐子的完整路径吗? 它没有给你 JAR,但我认为使用的模块会更有价值。从理论上讲,一个模块可能有来自另一个模块的重复 JAR。这是一个例子:10:52:16,113 TRACE [org.jboss.modules] (DeploymentScanner-threads - 1) Attempting to define class org.jboss.as.controller.access.TargetResource in Module "org.jboss.as.controller:main" from local module loader @33e5ccce (finder: local module finder @5a42bbf4 (roots: /home/jperkins/servers/wildfly-10.0.0.Final/modules,/home/jperkins/servers/wildfly-10.0.0.Final/modules/system/layers/base)) @JamesR.Perkins - 我的问题是我有不同的类,它们具有相同的包和名称,它们是从不同的 jar 加载的。使用-verbose:class 发现了它。这看起来不像。 【参考方案1】:

它应该工作。在 Windows 上,编辑 standalone.conf.bat 并将 -verbose:class 添加到 JAVA_OPTS

(这仅将其输出到控制台,但一个简单的解决方法是将其重定向到文件)

【讨论】:

我不确定这是否是标准的 Wildfly 东西,但我实际上是通过 ant 脚本运行它。该 ant 脚本在一个新的后台线程上生成 wildfly,该线程抑制了所有控制台输出。在该 ant 脚本中将 spawn="true" 更改为 spawn="false" 并最终输出到控制台。添加&gt; \app\classlist.log,我得到了我想要的。

以上是关于Wildfly 8 似乎没有记录 -verbose:class 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 WildFly 8.2.0 日志记录以仅在调试级别显示应用程序

Wildfly 8 基本身份验证

如何在Wildfly 8.2.0中的server.log文件中禁用日志记录应用程序日志

Wildfly 8.1 + EHCache + 注释不起作用

Eclipse、Spring、Wildfly log4j 日志记录

WildFly 8 的简单 REST API