【发布时间】:2012-09-05 18:13:30
【问题描述】:
当我启动我的 grails 应用程序时,我收到以下错误:
java.io.FileNotFoundException: stacktrace.log(权限被拒绝)
我知道这可以通过 chowning 一些文件/目录或更改日志所在的文件来解决,但我不希望这样:我只想将 stracktraces 记录到标准输出。
documentation 声明:
例如,如果您希望将完整的堆栈跟踪信息转到控制台,请添加 此条目:
错误标准输出:“StackTrace”
但是:它还指出:
这不会阻止 Grails 尝试创建 stacktrace.log 文件 - 它只是重定向堆栈跟踪的写入位置。
后来:
或者,如果您根本不想使用“stacktrace”附加程序,请配置 它作为“空”附加器:
log4j = {
appenders {
'null' name: "stacktrace"
}
}
我结合2,得到如下配置:
// log4j configuration
environments {
production {
log4j = {
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
// Don't use stacktrace.log
'null' name: "stacktrace"
}
}
}
}
log4j = {
// print the stacktrace to stdout
error stdout:"StackTrace"
}
很遗憾,这不起作用:
信息:部署 Web 应用程序存档 MyBackend.war
2012 年 9 月 12 日下午 4:46:11 org.apache.catalina.core.StandardContext 开始
严重:错误 listenerStart
2012 年 9 月 12 日下午 4:46:11 org.apache.catalina.core.StandardContext 开始
严重:上下文 [/MyBackend2] 由于先前的错误而启动失败
诚然,它不再尝试写入 stacktrace.log,因此不再抛出 Permission denied 错误,但我不知道为什么应用程序无法启动,因为它记录的唯一内容是“Error listenerStart "
谁能帮我配置我的应用程序以将堆栈跟踪记录到标准输出?
【问题讨论】:
-
我发现更改 Config.groovy 中的 log4j 属性只有在应用程序启动后才有效。我最终通过输入“tail -n 150 /var/log/tomcat6/localhost.2012-09-18.log”来查看“Error listenerStart”的原因(如果您想查看今天的堆栈跟踪,请将日期更改为今天)
标签: grails grails-2.0