0

私はjava.utils.loggingを使用しようとしています..これらの2つのファイルMyLoggerとUseLogger.MyLoggerがファイルハンドラーでロガーを設定しています..UseLoggerはログに書き込みます。ここに2つのファイルがあります..

package UtilsLogging;

import java.util.logging.Level;
import java.util.logging.Formatter;
import java.util.logging.SimpleFormatter;
import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.io.IOException;

/* Setting the logger up.
 * Create logger,define its level.
 * Create a file handler,mention the formatter,add handler to the logger
 */

public class MyLogger {

    static private SimpleFormatter sf;
    static private FileHandler txtLogFile;

    public static void setup() throws IOException{
        Logger logger = Logger.getLogger("");
        logger.setLevel(Level.INFO);
        sf = new SimpleFormatter();

        txtLogFile = new FileHandler("mytxtlog.txt");
        txtLogFile.setFormatter(sf);
        logger.addHandler(txtLogFile);
    }

}

package UtilsLogging;

import java.io.IOException;
import java.util.logging.Logger;
import java.util.logging.Level;

public class UseLogger {

    private static final Logger lgr = Logger.getLogger(MyLogger.class.getName());

    public void writeToLog(){
    lgr.setLevel(Level.SEVERE);
    lgr.info("info1");

    lgr.setLevel(Level.INFO);
    lgr.severe("severe2");

    }

    public static void main(String[] args){
        UseLogger ul = new UseLogger();
        try{
            MyLogger.setup();
        }
        catch(IOException ie){
            ie.printStackTrace();
        }

        ul.writeToLog();
    }
}

私が理解していないのはこれです..MyLogger.setup()を呼び出した後、ファイルmytxtlog.txtに書き込んでいるul.writeToLog()と言います。2 つのファイルに 2 つの異なるロガーを作成していませんか? UseLogger のロガーは、MyLogger で行われたロガーのセットアップにどのように関連付けることができますか? これを読んでみましたが、私の質問は未回答のままです..

4

1 に答える 1

1

以下の呼び出しにより、ルート ロガーが提供されます。

ロガー logger = Logger.getLogger("");

そして、ルート ロガーはすべてのロガーの親です。したがって、特定のロガーのロギング レベルまたはハンドラーを設定していない場合は、親ロガーから再帰的に (設定されている場合) またはルート ロガーから (デフォルトで) 継承されます。

于 2013-01-14T21:05:03.460 に答える