この質問に簡単な答えがあることを願っています。Java アプリケーションにロガーを追加しようとしています。ログ ファイルを完全にフォーマットできましたが、ConsoleHandler をロガーに追加してコンソール出力をフォーマットしようとしたときに問題が発生しました。
ConsoleHandler を追加すると、すべてのログ メッセージが 3 回出力されません。2 回は必要な適切な書式設定で、次に 1 回は希望しない元の形式で出力されます。
以下にコードを投稿しますが、何が間違っているのかまったくわかりません。
どんな助けでも大歓迎です。
// remove and handlers that will be replaced
Handler[] handlers = logger.getHandlers();
for(Handler handler : handlers)
{
if(handler.getClass() == ConsoleHandler.class || handler.getClass() == FileHandler.class)
logger.removeHandler(handler);
}
// file handler
FileHandler fh = new FileHandler(file.toString());
fh.setFormatter(new MS2Formatter());
logger.addHandler(fh);
// console handler
ConsoleHandler ch = new ConsoleHandler();
ch.setFormatter(new MS2Formatter());
logger.addHandler(ch);
logger.setLevel(Level.INFO);
編集:答え
同様の問題を抱えている人を助けるために、ここに最終的なコードを投稿したかっただけです。
logger = Logger.getLogger("My Logger");
logger.setUseParentHandlers(false);
// remove and handlers that will be replaced
Handler[] handlers = logger.getHandlers();
for(Handler handler : handlers)
{
if(handler.getClass() == ConsoleHandler.class)
logger.removeHandler(handler);
}
// setup the file
File file = new File(location + "/" + fileName);
// file handler
FileHandler fh = new FileHandler(file.toString(), true);
fh.setFormatter(new MS2Formatter());
logger.addHandler(fh);
// console handler
ConsoleHandler ch = new ConsoleHandler();
ch.setFormatter(new MS2Formatter());
logger.addHandler(ch);
// remove and handlers that will be replaced
logger.setLevel(Level.INFO);