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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置内部类的日志级别(在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设置外部的日志级别。但是我如何为Inner设置它?我测试了以下内容但没有成功:

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

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

答案

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

name - 记录器的名称。这应该是一个以点分隔的名称,通常应该基于子系统的包名或类名,例如java.net或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!

以上是关于设置内部类的日志级别(在Glassfish中)的主要内容,如果未能解决你的问题,请参考以下文章

Glassfish 3.1.1突然停止写入server.log

框架内部日志转到system.out(websphere 7.0)

如何使用 Java 代码配置 Logback 以设置日志级别?

Java内部类

怎么设置日志级别

Swift:“私有”和“内部”之间的访问级别?