複数のハンドラーが 1 つのロガーに設定されている状況があります。各ハンドラーは、機密情報が記録されないように置き換えます。
以下のSSCCEをご覧ください
import java.util.logging.ConsoleHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class TestLogging {
public static void main(String[] args) {
Logger logger=Logger.getLogger(A.class.getName());
logger.addHandler(new ConsoleHandler(){
{
setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return record.getMessage().replaceAll("method","replacing method");
}
});
}
});
logger.addHandler(new ConsoleHandler(){
{
setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return record.getMessage().replaceAll("Logging","replacing logging");
}
});
}
});
logger.setUseParentHandlers(false);
A a =new A();
a.method();
}
public static class A{
private static final Logger LOGGER=Logger.getLogger(A.class.getName());
public void method(){
LOGGER.info("\nLogging from inside method");
}
}
}
出力を「置換メソッド内からのロギングの置換」にしたいのですが、代わりにこのような出力が得られます
Logging from inside replacing method
replacing logging from inside method
別のハンドラーが既に設定されている場合、これらの両方のハンドラーを 1 つにマージするにはどうすればよいですか?