私は愚かでなければなりませんが、varargs-utilizingパラメータ化されたSLF4Jのログ方法を使用できないようです。 例:ロギング方法でSLF4Jは、varargsメソッドを使用したログ記録をパラメータ化しました
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です。
誰でも私の思考能力の欠点を指摘すれば、非常に感謝しています!
あなたはあなたの文字列の3つのプレースホルダが、4つの引数を持っている - これはわざとですか? – fge
はい:http://slf4j.org/faq.html#paramException – Manjabes
私は[この回答](http://stackoverflow.com/a/7689819/1523342)は非常にうまく説明すると思います。 – mthmulders