У меня есть вопрос, касающийся Logback.
В соответствии с моим требованием мне нужно создать экземпляр регистратора на основе ucid, и я могу создать этот экземпляр с использованием приведенного ниже кода
public static Logger getLogger(String ucid, LoggerType loggerType) {
Logger logger = null;
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
CustomLoggingLayout layout = new CustomLoggingLayout();
layout.start();
LayoutWrappingEncoder<ILoggingEvent> lwe = new LayoutWrappingEncoder<>();
lwe.setLayout(layout);
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
fileAppender.setFile("C:\\Tmp\\"+ucid+".log");
fileAppender.setName(ucid);
fileAppender.setEncoder(lwe);
fileAppender.setContext(lc);
fileAppender.start();
logger.addAppender(fileAppender);
logger.setLevel(Level.TRACE);
logger.setAdditive(false);
return logger;
}
После завершения записи я хочу закрыть этот экземпляр журнала. В настоящее время я могу закрыть только добавленные в этот регистратор приложения, используя приведенный ниже код
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.getLogger(ucid).detachAndStopAllAppenders();
Поскольку моя программа динамически создает регистраторы во время выполнения, и эти экземпляры регистратора находятся в памяти, и это увеличивает Java Память кучи. Итак, есть ли способ закрыть экземпляры журнала, которые я создал динамически?