Регистратор и FileHandler в Java
Я хочу напечатать дату и время в файле, а не на экране
это мой код:
String fileName = NameEnter.getText();
Logger logger = Logger.getLogger("puzzleNumberGame.securityScreen");
FileHandler fh = new FileHandler(fileName);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.log(Level.WARNING,"My first log");
Я использую это
// handlers = java.util.logging.ConsoleHandler;
но это не работает Спасибо за все:)
2 ответа
Включите статическое определение в класс следующим образом
private final static Logger LOGGER = Logger.getLogger("nescent");
Затем настройте Logger следующим образом.
private static void setupLogger(){
LOGGER.setLevel(Level.ALL);
try {
FileHandler fhandler = new FileHandler("Logfile.txt");
SimpleFormatter sformatter = new SimpleFormatter();
fhandler.setFormatter(sformatter);
LOGGER.addHandler(fhandler);
} catch (IOException ex) {
LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
} catch (SecurityException ex) {
LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
}
}
Вот мой взгляд на это: в блоке try{} создайте экземпляр объектов FileHandler и SimpleFormatter. Для регистрации данных в файле методы класса Logger должны быть вне блока try. Вот код:
public static void setupLogger () {
LOGGER.setLevel(Level.ALL);
LOGGER.info("doing stuff");
try{
FileHandler fhandler = new FileHandler("Logfile.txt");
SimpleFormatter sformatter = new SimpleFormatter();
fhandler.setFormatter(sformatter);
//This message does not log in the Logfile.txt, rather it logs in the console
LOGGER.log(Level.WARNING, "first log");
LOGGER.fine("information");
LOGGER.addHandler(fhandler);
}catch( IOException | SecurityException e){
LOGGER.log(Level.SEVERE, e.getMessage(), e);
}
LOGGER.log(Level.WARNING, "Warning message");
LOGGER.fine("This message is logged in the file");
}