19 Eylül 2017 Salı

JUL ConsoleHandler Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.logging.ConsoleHandler;
Açıklaması şöyle. Yani ConsoleHandler bazı logları System.err akımına gönderir. CONFIG, FINE, FINER, FINEST gibi seviyeleri loglamaz.
By default, the logger outputs log records of level INFO and above (i.e., INFO, WARNING and SEVERE) to standard error stream (System.err).
Örnek
Konsolda çıktı görmek için şöyle yaparız
import java.util.logging.Logger

public class Example {

  private final static Logger LOGGER = Logger.getLogger(Example.class.getName());

  public static void main(String[] args) {
    LOGGER.info("Test");
  }
}
Örnek
Şöyle yaparız. Burada setUseParentHandlers(false) yapılıyor yoksa,iki tane ConsolHandler olduğu için mesajları çift görürüz.
import java.util.logging.*;

public class ExampleLogger {
private static final Logger LOGGER = Logger.getLogger(ExampleLogger.class.getName());

  public static void main(String[] args) {
    // create a new console handler
    ConsoleHandler consoleHandler = new ConsoleHandler();
    // set the handler's log level to FINEST
    consoleHandler.setLevel(Level.FINEST);
    // add the handler to the logger
    LOGGER.addHandler(consoleHandler);
    LOGGER.setUseParentHandlers(false);
    LOGGER.info("Starting application...");

    try {
      int result = 10 / 0;
    } catch (ArithmeticException e) {
      LOGGER.log(Level.SEVERE, "An error occurred", e);
    }
    LOGGER.info("Application finished.");
  }
}
Açıklaması şöyle
By default, ConsoleHandler logs messages with a severity level of Level.INFO and higher to the console. However, by setting the log level to Level.FINEST, we can see all log messages, including those with lower severity levels.
Bir diğer yolu da şöyle
// Option 1: Remove the default ConsoleHandler :
Logger rootLogger = Logger.getLogger("");
Handler[] handlers = rootLogger.getHandlers();
for (Handler handler : handlers) {
  if (handler instanceof ConsoleHandler) {
    rootLogger.removeHandler(handler);
  }
}

// Option 2: call LOGGER.setUseParentHandlers(false);
LOGGER.setUseParentHandlers(false);



Hiç yorum yok:

Yorum Gönder