log4j с grails: как получить имя файла appender во время выполнения? - PullRequest
2 голосов
/ 13 сентября 2010

Я работаю над приложением Grails, в котором в режиме разработки я записываю некоторые вычисления в файл журнала через log4j.

Я хочу предоставить услугу, которая будет читать файл журнала и предоставлять его содержимое разработчику, чтобы они могли видеть, что регистрируется в файле журнала.

Есть ли способ, которым яможно получить имя файла приложения log4j во время выполнения?

Ответы [ 2 ]

5 голосов
/ 13 сентября 2010

Если ваша конфигурация логирования настроена следующим образом:

log4j = {
    appenders {
        file name: 'myFileAppender', file: '/tmp/myFile.log'
    }

    debug 'myFileAppender': 'myFileLogger'
}

Вы можете получить доступ к имени файла myFileLogger Logger, например:

import org.apache.log4j.Logger
import org.apache.log4j.FileAppender

def appender = (FileAppender)Logger.getLogger('myFileLogger').getAppender('myFileAppender')
def fileName = appender.file
3 голосов
/ 13 сентября 2010

Это найдет имя первого приложения:

import org.apache.log4j.*

Logger.rootLogger.allAppenders.find{it instanceof FileAppender}?.fileName
...