如何手动删除Logack Logger实例

时间:2020-02-26 06:54:43

标签: logback spring-logback logback-classic

我有一个关于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堆内存。因此,有没有办法关闭我动态创建的那些记录器实例?

0 个答案:

没有答案
相关问题