Я использую логбэк в моем приложении grails, а код для logback.groovy выглядит следующим образом: -
def targetDir = BuildSettings.TARGET_DIR
if (Environment.isDevelopmentMode() && targetDir != null)
{
appender("FULL_STACKTRACE", FileAppender) {
file = "${targetDir}/stacktrace.log"
append = true
encoder(PatternLayoutEncoder) {
pattern = "%level %logger - %msg%n"
}
}
logger("StackTrace", DEBUG, ['FULL_STACKTRACE'], false)
}
root(ERROR, ['STDOUT'])
Я перезапустил свое приложение, но журналы не создаются в файле stacktrace.log.
Также не могли бы вы сообщить мне, зачем нам нужны 2 регистратора (root и logger). Разве у нас не может быть logback.groovy без рута.
Спасибо,
Да, это в режиме разработки. Пустой файл stacktrace.log уже существует, но сообщения журнала в нем не создаются.





Logback позволяет комбинировать разные регистраторы для разных файлов журналов и пакетов.
Например:
appender('STDOUT', ConsoleAppender) {
...
}
appender('FILE', RollingFileAppender) {
file = "${basePath}/logs/myLog.log"
...
}
root WARN, ['STDOUT', 'FILE']
logger 'org.hibernate.SQL', TRACE, ['STDOUT']
в этом примере ваш корневой регистратор будет записывать журналы (с уровнем, равным или выше, чем WARN) в консоль и файл журнала. но вы также будете получать журналы TRACE или более высокого уровня на консоль из пакета org.hibernate.SQL.
Logback чрезвычайно гибкий. Вы можете найти инструкции здесь https://logback.qos.ch/manual
распечатайте
targetDirи посмотрите, как он выглядит. Вы работаете в режимеdevelopment?