0
私はlog4j2(log4j2.xmlを使用してパラメータを初期化する)を使用するアプリケーションで作業しており、ロガーを読み込みます。アプリケーションが実行されると、ログレベルの変更やファイルアペンダーのプロパティのローリングなど、いくつかのパラメータをプログラムによってオーバーライドする必要があります。log4j2ローリングファイルアペンダの最大ファイルをプログラム的に
/**
* @param logger Logger instance
* @param level New log level to be applied on the logger instance
*/
private void setLoggerLevel(Logger logger, Level level) {
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
LoggerConfig loggerConfig = getLoggerConfig(logger.getName());
Logger rootLogger = LogManager.getRootLogger();
if(logger != rootLogger && loggerConfig != config.getLoggerConfig(rootLogger.getName()))
{
loggerConfig.setLevel(level);
context.updateLoggers();
}
}
ここで、RollingFileアペンダーのプロパティを使用して同じ問題に取り組もうとしました。しかし、私は既存のRollingFileアペンダのプロパティを変更する方法に
Logger applicationLogger = LogManager.getLogger(logName);
if (applicationAppender instanceof RollingFileAppender) {
// Configure max properties of rolling file appender here
if (maxLogFiles != null) {
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
// Copied code from lib
DefaultRolloverStrategy newStrategy = DefaultRolloverStrategy.createStrategy(String.valueOf(maxLogFiles), null, null,
String.valueOf(Deflater.DEFAULT_COMPRESSION), null, true, config);
// How to modify the existing appender?
}
}
を立ち往生していますアペンダプログラムでローリングファイルを変更することを続行する方法は何ですか?
は多分の重複:[Log4j2 RollingFileアペンダ - 各ログファイルの開始時にカスタム情報を追加] (http://stackoverflow.com/questions/20819376/log4j2-rollingfile-appender-add-custom-info-at-the-start-of-each-logfile) –
リンクされた質問は、基本的にlog4j2のフックを追加することを示唆しています。アペンダーを変更するだけで、機能全体をオーバーライドする必要はありません。アペンダーを削除して既存のアペンダーを再追加することはできませんか? – dmachop