В моем приложении Grails 1.1 есть следующая конфигурация log4j
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 соответствует ожиданиям.
Если я захожу в протокол испытаний для модульного теста и нажимаю ссылку «System.out», я вижу свои сообщения журнала в следующем формате:
DEBUG (member.InviteServiceTests): Calling getInvite with member (4517)
Обратите внимание, что это не тот шаблон, который я указал в моей конфигурации log4j. Кроме того, если я изменю конфигурацию log4j с:
debug 'com.mycompany'
до:
fatal 'com.mycompany'
Я все еще вижу сообщения журнала на уровне отладки в отчете о тестировании. Кажется, что корневой логгер переопределяется при запуске модульных тестов? Я пытался записывать классы под com.mycompany
, используя отдельный регистратор, но это, похоже, не имеет никакого значения
Спасибо,
Дон