У меня есть следующая конфигурация log4j в приложении Grails 1.1
log4j = {
// Enable Hibernate SQL logging with param values
trace 'org.hibernate.type'
debug 'org.hibernate.SQL'
debug 'com.mycompany'
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n')
file name: 'hibeFile', file: 'hibe.log', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n')
}
// By default, messages are logged at the error level to both the console and hibe.log
root {
error 'stdout', 'hibeFile'
additivity = true
}
}
Когда я запускаю модульные тесты, единственным результатом генерации журнала является класс Hibernate. Я не понимаю, почему для моих собственных классов не генерируется вывод журнала, т.е. Те, которые находятся в пространстве имен com.mycompany
. Как ни странно, когда я запускаю интеграционные тесты, вывод log4j выглядит так, как ожидалось.
Если я перейду к отчету об испытаниях для unit test и нажмите ссылку "System.out", я увижу свои сообщения журнала в следующем формате:
DEBUG (member.InviteServiceTests): Calling getInvite with member (4517)
Обратите внимание, что это не тот шаблон, который я указал в моей конфигурации log4j. Кроме того, если я изменяю конфигурацию log4j из:
debug 'com.mycompany'
в
fatal 'com.mycompany'
Я все еще вижу сообщения журнала на уровне отладки в отчете об испытаниях. Кажется, что корневой журнал запущен при выполнении модульных тестов? Я пробовал классы ведения журнала под com.mycompany
с помощью отдельного регистратора, но это, похоже, не имеет никакого значения.
Спасибо, Дон