java - 设置内部类的日志级别(在 Glassfish 中)

标签 java logging glassfish

我正在寻找一种方法来设置内部类的日志级别,假设我有以下类:

package mypackage;

class Outer {
   Inner inner = new Inner();

   public void logSomething() {
       Logger.getLogger(Outer.class.getName()).log(Level.FINE, "I'm alive!");
       inner.logSomething();
   } 

   class Inner {
       public void logSomething() {
           Logger.getLogger(Inner.class.getName()).log(Level.FINE, "I'm alive too!");
       }
   }
}

我可以使用名称 mypackage.Outer 设置 Outer 的日志级别。但是如何为 Inner 设置它呢?我测试了以下但没有成功:

  • mypackage.Outer
  • mypackage.Outer.Inner
  • mypackage.Outer$Inner(给出错误)
  • mypackage.Inner

有谁知道有没有办法做到这一点?

最佳答案

Inner.class.getName() 正在返回 mypackage.Outer$Inner,它不遵循 Logger.getLogger() 的预期约定|参数

name - A name for the logger. This should be a dot-separated name and should normally be based on the package name or class name of the subsystem, such as java.net or javax.swing

你可以明确地使用

Logger.getLogger("myPackage.Outer.Inner").log(Level.FINE, "I'm alive too!")

并使用 myPackage.Outer.Inner 设置级别

奇怪的是,消息被 SimpleFormatter() 格式化,使用 $ 作为内部类,因为它输出的是类名,而不是记录器名

28-feb-2013 19:04:16 mypackage.Outer$Inner logSomething
FINE: I'm alive too!

关于java - 设置内部类的日志级别(在 Glassfish 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898112/

相关文章:

logging - 并行 MATLAB 和日志记录

java - GlassFish 2.1 : Which Java EE version?

java - 如何使用 JDBC 驱动程序获取 DB2 中所有现有数据库的列表?

java - 出现不正确的 SQL 语法

Java 异常堆栈跟踪不打印

python Nose : Log tests results to a file with Multiprocess Plugin

java - Glassfish5 错误 : Exception in thread "main" java. lang.NullPointerException

java - Web Sockets + Tomcat/Glassfish + 集群 + 负载平衡 - 有哪些选项?

java - 排序算法效率

java - 公共(public)类与公共(public)静态内部类的异常