编程实践:Java Logger(log4j)

Ala*_*ody 1 java eclipse logging

在Java中,用于创建记录器,而不是调用

private static final Logger logger = LoggerFactory.getLogger("ClassName");
Run Code Online (Sandbox Code Playgroud)

我创建了一个实用程序方法,它从堆栈跟踪中返回类名并调用该方法.

private static final Logger logger = LoggerFactory.getLogger(Utilities.getInvokingClassName());
Run Code Online (Sandbox Code Playgroud)

Utilities.java:

public static String getInvokingClassName()
{
    return new Throwable().getStackTrace()[1].getClassName();
}
Run Code Online (Sandbox Code Playgroud)

缺点显然是我使用的是资源密集型流程,而专业人员则认为我在编码时具有更高的模块性.问题是这对性能的影响有多大?如果它不太耗费资源,那为什么它不是标准做法?

Ole*_*ksi 6

这不是一个大的性能影响,但它可能没有被使用,因为它过于复杂的一个非常简单的场景.您的代码可能更加模块化,但阅读和理解变得更加困难.

  • 更容易阅读和理解应该每次都赢. (2认同)