我一直在非正式地使用Log4j,现在我正在切换到Logback。我已经习惯使用Spiffy到ensure my logging class is consistent。
即。而不是
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在这个阶段是如何做的,我只是使用它。
答案 0 :(得分: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 jar和配置放入类路径中以便使用它。
答案 1 :(得分:3)
Spiffy的LoggerHelper使用Throwable.getStackTrace方法。不幸的是,这种方法并非100%可靠。来自javadocs:
某些虚拟机可能在某些情况下 情况,省略一个或多个堆栈 堆栈跟踪中的帧。
换句话说,Spiffy的LoggerHelper可能会返回错误命名的记录器。如果发生这种情况,将很难调试。