相关疑难解决方法(0)

为什么stacktrace.log没有在grails 3中填充logback?

当你创建一个新的grails应用程序时,默认的logback.groovy文件(几乎每个logback.groovy 的例子,甚至是Haki先生的例子)都包含以下代码,我已将其简化为关注相关部分:

root(ERROR, ['STDOUT'])

appender("FULL_STACKTRACE", FileAppender) {
    file = "build/stacktrace.log"
    append = true
    encoder(PatternLayoutEncoder) {
        pattern = "%level %logger - %msg%n"
    }
}
logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false )
Run Code Online (Sandbox Code Playgroud)

但是,遵循此方法不会导致错误输出到stacktrace.log文件.

@ JeffScottBrown的答案包含以下Bootstrap.groovy文件,用于测试堆栈跟踪是否按预期记录:

class BootStrap {

    def init = { servletContext ->
        log.error 'this is a new error'
    }
    def destroy = {
    }
}
Run Code Online (Sandbox Code Playgroud)

使用该引导文件,运行grails应用程序将不会产生任何输出build/stacktrace.log.

如果删除StackTrace记录器,则添加FULL_STACKTRACE到根记录器:

root(ERROR, ['STDOUT', 'FULL_STACKTRACE']
Run Code Online (Sandbox Code Playgroud)

您将获得输出到stacktrace.log.

或者,将StackTrace记录grails.app.init.Bootstrap器重命名为(感谢此行的@JeffScottBrown):

logger 'grails.app.init.BootStrap', ERROR, ['FULL_STACKTRACE'], false
Run Code Online (Sandbox Code Playgroud)

您将获得输出到stacktrace.log

这一观察让我相信 …

grails logback logback-groovy

7
推荐指数
1
解决办法
1471
查看次数

标签 统计

grails ×1

logback ×1

logback-groovy ×1