私はlog4j2を使ってプロジェクトのログをいくつか行っています。私の設定のMy Loggersセクションは次のようになります。log4jを使用して外部ライブラリからのログメッセージを抑制する方法
<Loggers>
<!-- default logger -->
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
<!-- only log warn/error/fatal for external libs -->
<Logger name="org.cfg4j" level="warn" additivity="false">
<AppenderRef ref="Console"></AppenderRef>
</Logger>
<Logger name="io.netty.util" level="warn" additivity="false">
<AppenderRef ref="Console"></AppenderRef>
</Logger>
</Loggers>
これは私の知る限り、「io.netty.utilログ」をGoogleで検索してthisを思い付いたio.netty.util
からDEBUGレベルのメッセージをsupressingとして任意の効果を持つことしていないようです。デフォルトロガーを無効にする方法があるようです。
public abstract class InternalLoggerFactory {
private static volatile InternalLoggerFactory defaultFactory;
static {
final String name = InternalLoggerFactory.class.getName();
InternalLoggerFactory f;
try {
f = new Slf4JLoggerFactory(true);
f.newInstance(name).debug("Using SLF4J as the default logging framework");
defaultFactory = f;
} catch (Throwable t1) {
try {
f = new Log4JLoggerFactory();
f.newInstance(name).debug("Using Log4J as the default logging framework");
} catch (Throwable t2) {
f = new JdkLoggerFactory();
f.newInstance(name).debug("Using java.util.logging as the default logging framework");
}
}
defaultFactory = f;
}
私はこれを行ってみましたが、いくつかの問題がありました。私のIDE(intellij)は、Log4JLoggerFactoryが推奨されていないことを教えてくれました。私は処理を進めましたが、インスタンスに「newInstance」というメソッドが含まれていないことがわかりました。
これを進める方法について少し混乱しています。 log4jが私の考え方で外部ライブラリのDEBUG/INFOレベルメッセージを抑制する方法はありますか?
"org.apache.logging.log4j:log4j-1.2-api:+" これを私のgradleビルドファイルに入れます。これは正しいか? – Zack
外部のlib(ブリッジ)が実際に私のクラスパスにあるように見えますが、私はまだ外部ライブラリに関連するログ出力をたくさん取得しています – Zack
[this](https://logging.apache.org/ log4j/log4j-2.2/log4j-1.2-api/index.html)、1.0ディストリビューションのすべてのインスタンスをブリッジに置き換える必要があります。私はそれぞれの外部のlibにダイビングする必要がありますか? – Zack