how can i disable the default console handler, while using the java logging api ?

Posted by loudiyimo on Stack Overflow See other posts from Stack Overflow or by loudiyimo
Published on 2010-03-28T14:25:01Z Indexed on 2010/03/28 14:33 UTC
Read the original article Hit count: 347

Filed under:
|

Hi I am trying to implement the java logging in my application. I want to use two handlers. A file handler and my own console handler. Both of my handlers work fine. My logging is send to a file and to the console . My logging is also sent to the default console handler, which i do not want. If you run my code you will see extra two line sent to the console. I don't want to use de default console handler. Does anyone know how to disable the default console handler. I only want to use the two hadlers i have created.

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. ??");
}

}

© Stack Overflow or respective owner

Related posts about java

Related posts about java.util.logging