0

ロガーを使用して要素の値を確認しましたが、アプリケーションの起動に時間がかかり、ログを確認すると、意図したファイルが 100 回以上作成されていることがわかりました。

要素はすべてのファイルに出力されますか? この動作の原因は何ですか?

静的変数を使用し、その変数がアプリケーション内の多くのメソッドで使用されている場合、メソッドごとに1つのファイルが作成されます!! しかし、アクセスするすべてのオブジェクトに使用される単一の値として静的変数を知っていますか??

ロガーの宣言は

 private static Logger telog = Logger.getLogger(XMLCIMHandler.class.getName());
        FileHandler fh;

そして初期化は

try {
                File file = new File("C:\\TElogs");
                boolean b = file.mkdir();
                fh = new FileHandler("C:\\TElogs\\TElogs%u.%g.log",
                        1000000, 10);
                      telog.addHandler(fh);
                telog.setUseParentHandlers(false);
                SimpleFormatter formatter = new SimpleFormatter();
                fh.setFormatter(formatter);
            } catch (Exception e) {
                Writer writer = new StringWriter();
                PrintWriter printWriter = new PrintWriter(writer);
                e.printStackTrace(printWriter);
                String s = writer.toString();
                telog.info("  "+ s);
            }

そして使用した要素を印刷TElog.info(element); するには説明してください...よろしくお願いします

4

1 に答える 1

1

コンストラクターでロガーを初期化するため、問題が発生する可能性があります。これは、クラスの各インスタンスが新しいファイルを作成することを意味します。

静的初期化ブロックで初期化するか、初期化する前に既に初期化されているかどうかを確認する必要があります。

于 2013-07-13T12:39:23.310 に答える