Wie kann ich den Standard-Konsolenhandler deaktivieren, während ich die Java-Protokollierungs-API verwende?

Hallo, ich versuche, die Java-Protokollierung in meiner Anwendung zu implementieren. Ich möchte zwei Handler verwenden. Ein Dateihandler und mein eigener Konsolenhandler. Meine beiden Handler funktionieren gut. Meine Protokollierung wird an eine Datei und an die Konsole gesendet. Meine Protokollierung wird auch an den Standard-Konsolen-Handler gesendet, den ich nicht möchte. Wenn Sie meinen Code ausführen, werden zwei zusätzliche Zeilen an die Konsole gesendet. Ich möchte nicht den Standard-Konsolen-Handler verwenden. Weiß jemand, wie man den Standard-Konsolen-Handler deaktiviert? Ich möchte nur die beiden Handler verwenden, die ich erstellt habe.

Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

public class LoggingExample {
    private static Logger logger = Logger.getLogger("test");

    static {
        try {
            logger.setLevel(Level.INFO);

            Formatter formatter = new Formatter() {

                @Override
                public String format(LogRecord arg0) {
                    StringBuilder b = new StringBuilder();
                    b.append(new Date());
                    b.append(" ");
                    b.append(arg0.getSourceClassName());
                    b.append(" ");
                    b.append(arg0.getSourceMethodName());
                    b.append(" ");
                    b.append(arg0.getLevel());
                    b.append(" ");
                    b.append(arg0.getMessage());
                    b.append(System.getProperty("line.separator"));
                    return b.toString();
                }

            };

            Handler fh = new FileHandler("test.txt");
            fh.setFormatter(formatter);
         ,   logger.addHandler(fh);

            Handler ch = new ConsoleHandler();
            ch.setFormatter(formatter);
            logger.addHandler(ch);

            LogManager lm = LogManager.getLogManager();
            lm.addLogger(logger);
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        logger.info("why does my test application use the standard console logger ?\n" + " I want only my console handler (Handler ch)\n " + "how can i turn the standard logger to the console off. ??");
    }
}

Antworten auf die Frage(5)

Ihre Antwort auf die Frage