Мы почти везде используем для логирования logback. Иногда надо получить доступ к его Appender-ам в runtime. Зачем ? Например, если я хочу получить пути файлов, в которые идёт запись логов - чтобы архивировать и передать по http клиенту (если это, скажем, web-приложение).
Пример доступа :
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// проходим по всем loggers
for (ch.qos.logback.classic.Logger logger : lc.getLoggerList()) {
// от каждого logger получаем его appenders
Iterator iter = logger.iteratorForAppenders();
while (iter.hasNext()) {
Appender appender = (Appender) iter.next();
// тут приходится анализировать конкретные классы
if (appender instanceof FileAppender) {
....
}
}
}
Пример доступа :
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// проходим по всем loggers
for (ch.qos.logback.classic.Logger logger : lc.getLoggerList()) {
// от каждого logger получаем его appenders
Iterator iter = logger.iteratorForAppenders();
while (iter.hasNext()) {
Appender appender = (Appender) iter.next();
// тут приходится анализировать конкретные классы
if (appender instanceof FileAppender) {
....
}
}
}