Witam Próbuję zaimplementować rejestrowanie Java w mojej aplikacji. Chcę użyć dwóch programów obsługi. Obsługa plików i moja własna obsługa konsoli. Obaj z moich opiekunów działają dobrze. Moje logowanie jest wysyłane do pliku i do konsoli. Moje logowanie jest również wysyłane do domyślnego programu obsługi konsoli, którego nie chcę. Jeśli uruchomisz mój kod, zobaczysz dodatkowe dwie linie wysłane do konsoli. Nie chcę używać domyślnego programu obsługi konsoli. Czy ktoś wie, jak wyłączyć domyślną obsługę konsoli. Chcę użyć tylko dwóch procedur obsługi, które utworzyłem.Jak wyłączyć domyślną procedurę obsługi konsoli podczas korzystania z interfejsu API rejestrowania w języku Java?
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. ??");
}
}
Czy mogę delikatnie polecić użycie 'b.append (formatMessage (arg0))' zamiast 'b.append (arg0.getMessage())'. Metodą 'formatMessage' dostosowujesz swój formatator za pomocą' public void log (poziom poziomu, String msg, Object param1) 'i podobne metody. – Victor