1

我一直在非正式地使用 Log4j,现在正在切换到 Logback。我已经习惯使用Spiffy确保我的日志记录类是一致的

即代替

private static final Logger log = Logger.getLogger( Foo.class );

或者

private final Logger log = Logger.getLogger( this.getClass() );

我愿意

private static final Logger log = LoggerHelper.getLogger();

在 Logback 中是否有类似的方法可以做到这一点?我不知道 Spiffy 在这个阶段是如何做到的,我只是使用它。

4

2 回答 2

3

您通常不会直接使用 logback,而是通过slf4j。这是它的使用方式:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

class A
{
    private static final Logger logger = LoggerFactory.getLogger(A.class);

    public void method1()
    {
        logger.info("Hello world");
        ....
    }
}

然后在部署期间,您可以将 logback jars 和配置放入您的类路径中以便使用它。

于 2011-03-30T08:57:59.080 回答
3

Spiffy 的 LoggerHelper 使用Throwable.getStackTrace方法。不幸的是,这种方法不是 100% 可靠的。从javadocs:

在某些情况下,某些虚拟机可能会从堆栈跟踪中省略一个或多个堆栈帧。

换句话说,Spiffy 的 LoggerHelper 可能会返回错误命名的记录器。如果发生这种情况,调试将非常困难。

于 2011-03-30T14:25:38.993 回答