私は愚か者か何かに違いありませんが、SLF4J の可変引数を利用したパラメーター化されたロギング メソッドを使用できないようです。例:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggingTest {
@Test
public void loggingTest() {
Logger logger = LoggerFactory.getLogger(this.getClass());
int x = 0xdeadbeef;
long y = 0xdeadbeef;
try {
throw new Exception("This is a mighty exception!");
} catch(Exception e) {
logger.error("I wanna log {} and {} and {} with backtrace", x, y, 3, e);
}
}
}
ロギング メソッドでは、Eclipse は次のような警告を生成します。
The method error(String, Object, Object) in the type Logger is not applicable for the arguments (String, int, long, int, Exception)
コンパイルに失敗します。
ただし、ロギング呼び出しを次のように変更すると:
logger.error("I wanna log {} and {} and {} with backtrace", new Object[]{x, y, 3, e});
期待どおりにコンパイルおよび実行されます (3 つの「変数」と例外スタック トレースのログ)。
ライブラリのバージョンは次のとおりです: slf4j-api-1.7.5.jar、slf4j-log4j12-1.7.5.jar、および log4j-1.2.14.jar (違いがある場合)。
誰かが私の思考能力の欠点を指摘してくれたら、とてもありがたいです!