繁体   English   中英

如何简化类级记录器的创建?

[英]How can I simplify the creation of class-level loggers?

Java 中有没有办法在不引用对象的情况下找出我所在的类? 我需要静态点的当前类名。 下面是一个例子:

public class MyClass {
  // is this possible?
  private static final String myClassName = ???;

  // not like this
  void someMethod(){
    String className = this.getClass();
  }

  // or this
  private static final String myClassName = MyClass.class;

}

总体问题是日志记录。 我正在处理的项目的记录器需要类名,并且应该像这样声明:

private static final Logger LOGGER = LogHelper.getLogger(MyClass.class);

如果有更通用的方法,复制记录器会更容易。

我需要在多个类中使用此代码,最好只复制代码而不是每次都替换“MyClass.class”。

不幸的是,不同的方法与这个项目的约定不兼容。

一些像 eclipse 这样的编译器可以让你这样做,exsamples 看看这个页面:

http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-code-templates/

并在您的新模板中使用它:

private static final Logger LOGGER = LogHelper.getLogger(${primary_type_name}.class

简而言之,可能没有更简单或更通用的方法来做到这一点。 虽然我不确定您使用的确切记录器库,但主要的事实仍然是您必须提供要记录到记录器的类。

这确实意味着额外的输入,但没有更简单、更容易理解或更安全的现实方法——任何过于复杂并使用大量反射来提取类名的东西都需要进行测试以确保它始终返回正确的类,它是比单纯使用基本上更多的努力MyClass.class

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM