Цель
В настоящее время я регистрирую некоторые ловушки SNMP с помощью встроенного метода ведения журналов Java.
Моя проблема
Проблема в том, что я запускаю свой FileHandler в конструкторе моего файла "Logging".Хотя сама запись ведется внутри метода вне конструктора.
Поэтому я не знаю, как правильно закрыть FileHandler после того, как журнал произошел, потому что сам регистратор открывается внутри конструктора.-> Ошибка, которая возникает в результате этого, заключается в том, что моя регистрация создает файлы, такие как "log.txt", log1.txt "," log2.txt "...
Что я пробовал
Я пытался закрыть FileHandler внизу моего конструктора ... очевидно, что это не сработало. Также я пытался закрыть его из метода, где происходит сам журнал. Проблема здесья не имею доступа к экземпляру обработчика.
Код регистратора
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class Logging {
private Logger log = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
public Logging() {
Logger root = Logger.getLogger("");
FileHandler txt = null;
try {
txt = new FileHandler("log.txt", true);
}
catch(SecurityException | IOException e) {
e.printStackTrace();
}
root.setLevel(Level.ALL);
txt.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
String ret = "";
/*
if(record.getLevel().intValue() >= Level.WARNING.intValue()) {
ret += "Error: ";
}
*/
SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy | HH:mm");
Date d = new Date(record.getMillis());
ret += df.format(d);
ret += this.formatMessage(record);
return ret;
}
});
root.addHandler(txt);
}
public void addMessage(String message, String type) {
if(type == "warning") {
log.warning(message);
}
}
}
Спасибо за любую помощь