当我启动我的 grails 应用程序时,我收到以下错误:
java.io.FileNotFoundException:stacktrace.log(权限被拒绝)
我知道这可以通过 chowning 一些文件/目录或更改日志转到的文件来解决,但我不希望这样:我只想将 stracktraces 记录到标准输出。
该文档指出:
例如,如果您希望将完整的堆栈跟踪信息转到控制台,请添加以下条目:
错误标准输出:“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”
谁能帮我配置我的应用程序以将堆栈跟踪记录到标准输出?