Фильтр Log4j в конфигурации Grails Log4j - PullRequest
2 голосов
/ 29 февраля 2012

Есть ли способ указать фильтр log4j в конфигурации Grails log4j DSL ?Мне нужно определить что-то вроде этого в моей конфигурации Grails log4j:

<filter class="org.apache.log4j.filter.ExpressionFilter">
    <param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" />
    <param name="acceptOnMatch" value="false"/>
</filter>

Я использую Grails 1.3.7.

Ответы [ 3 ]

4 голосов
/ 19 марта 2012

Я решил эту проблему, добавив короткий код инициализации в Bootstrap.groovy

Logger.rootLogger.allAppenders.each { appender ->
    ExpressionFilter filter = new ExpressionFilter()
    filter.expression = "EXCEPTION ~= org.springframework.security.authentication.*"
    filter.acceptOnMatch = false
    filter.activateOptions()
    appender.addFilter(filter)
}
1 голос
/ 19 октября 2016

Просто обновление, наткнулся на эту проблему и нашел другое решение (надеюсь, послужит этому справочным):

в Config.groovy,

Filter expFilter = new org.apache.log4j.filter.ExpressionFilter()
expFilter.setExpression('EXCEPTION ~= com.company.BackendNotAvailableException')
expFilter.setAcceptOnMatch(false)

log4j = {
    appenders {
        appender new DailyRollingFileAppender(
            ...
            // This is where we set the filter:
            headFilter: expFilter
            ...
        )
}
0 голосов
/ 08 июля 2015

Спасибо за указатель. Я сделал то же самое без ExpressionFilter, чтобы мне не пришлось загружать дополнительный модуль Log4j Extras, используя быстрое приведение Groovy к закрытию :

import org.apache.log4j.Logger
import org.apache.log4j.spi.Filter

Logger.rootLogger.allAppenders*.addFilter({ event ->
    event.loggerName == "some.logger.name" && event.message =~ /text to ignore/
    ? Filter.DENY : Filter.NEUTRAL
} as Filter)

В моем случае я хотел отфильтровать некоторые ложные сообщения, сгенерированные Hibernate при запуске, поэтому я поместил этот код в Config.groovy, потому что Bootstrap будет выполнен слишком поздно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...