【问题标题】:Enable Verbose Logging for Java (rt.jar)为 Java 启用详细日志记录 (rt.jar)
【发布时间】:2018-11-13 06:37:12
【问题描述】:

我是堆栈溢出的新手,如果我在第一篇文章中犯了任何错误,请原谅。

我正在尝试为 java 包下的所有类启用 VERBOSE 日志记录:sun.rmi.* 正在使用的容器是 JBOSS-4.2.2,我们的应用程序中有一个 jboss-log4.xml。

我在启动期间使用了以下 JAVA_OPTS,希望看到 TCPChannel.java 中的详细日志记录,它是 rt.jar(http://www.docjar.com/html/api/sun/rmi/transport/tcp/TCPChannel.java.html) 的一部分,但它不起作用。

JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.logCalls=true 
-Dsun.rmi.server.logLevel=VERBOSE 
-Dsun.rmi.client.logCalls=true 
-Dsun.rmi.transport.tcp.logLevel=VERBOSE 
-Dsun.rmi.transport.logLevel=VERBOSE"

下面是 jboss-log4j.xml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" 
 debug="false">

<!-- A time/date based rolling appender -->
<appender name="FILE" 
   class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/trace.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="TRACE#org.jboss.logging.XLevel"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%X{jobName} 
  %X{token}] [%c] - %m%n"/>
</layout>
</appender>

<!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
<category name="org.apache">
<priority value="INFO"/>
</category>

<!-- Limit the jacorb category to WARN as its INFO is verbose -->
<category name="jacorb">
<priority value="WARN"/>
</category>

<!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
<category name="org.jgroups">
 <priority value="DEBUG"/>
</category>

<!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->
<category name="org.quartz">
  <priority value="INFO"/>
</category>

<!-- Limit the JSR77 categories -->
<category name="org.jboss.management">
  <priority value="DEBUG"/>
</category>

<category name="org.jboss.serial">
  <priority value="TRACE"/>
</category>

<category name="org.jboss.remoting">
  <priority value="TRACE" class="org.jboss.logging.XLevel"></priority>
</category>

<category name="org.jboss">
  <priority value="TRACE" class="org.jboss.logging.XLevel"></priority>
</category>  

<category name="org.jnp">
  <priority value="TRACE"/>
</category>

 <root>
 <appender-ref ref="FILE"/>
 <!--appender-ref ref="SYSLOG"/-->
</root>
</log4j:configuration>

如果我认为 log4j.xml 覆盖了我的 java_opts,如何使用 jboss-log4j.xml 中的系统属性启用日志记录 我使用这个链接作为参考: https://docs.oracle.com/javase/6/docs/technotes/guides/rmi/logging.html

我想尝试上面链接中描述的类别“客户端”“服务器端”,但我对语法很清楚,如果可以提供任何示例语法,那会有所帮助。

非常感谢您在启用详细日志记录方面的任何帮助。

【问题讨论】:

    标签: java logging jboss log4j


    【解决方案1】:

    由于sun.rmi.* 是 Java SE 类,它们不太可能使用 log4j 日志记录。因此,尝试通过 log4j 配置为这些类配置日志记录(IMO)注定会失败。

    相反,您应该阅读有关如何使用标准 java.util.logging framework 启用 RMI 日志记录 here,并通过 java.util.logging 属性文件配置日志记录;见here

    我认为 log4j 和 java.util.logging 可以共存,前提是您不要尝试登录到相同的日志文件。

    【讨论】:

    • 感谢斯蒂芬的回复。通过调整 jre/lib/ 下的 logging.properties 文件,我能够通过 API 启用 Java SE 类的日志记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2017-03-13
    • 1970-01-01
    相关资源
    最近更新 更多