Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LocationAwareLogger无法识别参数_Java_Slf4j - Fatal编程技术网

Java LocationAwareLogger无法识别参数

Java LocationAwareLogger无法识别参数,java,slf4j,Java,Slf4j,试图在从正确位置记录日志的记录器周围创建一个包装器 default LocationAwareLogger log() { return (LocationAwareLogger) LoggerFactory.getLogger( this.getClass() ); } default void logClick( final String message ) { log().trace( this.getClass().getName() ); log().log(

试图在从正确位置记录日志的记录器周围创建一个包装器

default LocationAwareLogger log() {
    return (LocationAwareLogger) LoggerFactory.getLogger( this.getClass() );
}

default void logClick( final String message ) {
    log().trace( this.getClass().getName() );
    log().log( null,
               Loggable.class.getName(),
               LocationAwareLogger.DEBUG_INT,
               "{} click '{}'",
               new Object[] { getContext().getName(), message }, null );
}
但当它运行时,它无法识别参数

20151117 16:48:53,964 DEBUG [main] ClickClose[22]: {} click '{}'
我必须更改什么才能使参数正常工作


注意:使用v1.6.1和Log4j适配器

,因此答案似乎是,至少在我们的Log4j适配器版本中,它不进行消息格式化,事实上,此方法完全忽略了第一个和最后两个参数。我决定无论如何通过他们。。。但这意味着我必须直接调用格式化程序

对于将来看到这一点的任何人来说,第二个参数似乎不是log origin类,而是堆栈上您希望出于日志目的开始忽略的地方,因此当从接口中进行日志记录时,如果我选择了
this.getClass(),我希望忽略作为接口的类
我注意到它是从日志界面上方的两个级别进行日志记录的

default void logClick( final String message ) {
    FormattingTuple tuple = MessageFormatter.arrayFormat(
        "{} click '{}'", new Object[] { getContext().getName(), message } );
    log().log( null,
               Loggable.class.getName(),
               LocationAwareLogger.DEBUG_INT, tuple.getMessage(),
               tuple.getArgArray(), tuple.getThrowable() ); // last 2 args are ignored pass them anyways
}