Grails: log stacktrace auf stdout
Wenn ich starte meine grails-Anwendung, bekomme ich die folgende Fehlermeldung:
java.io.FileNotFoundException: stacktrace.log (Permission denied)
Ich weiß, dieses Problem kann gelöst werden, indem chowning einige Dateien/Verzeichnisse oder durch ändern der Datei die logs gehen, aber das will ich nicht: ich möchte nur stracktraces angemeldet sein, um die Standardausgabe.
Den Dokumentation Staaten:
Zum Beispiel, wenn Sie bevorzugen volle stack-traces zu gehen, um die Konsole hinzufügen
dieser Eintrag:Fehler stdout: "StackTrace"
Jedoch: auch Staaten:
Dieser wird nicht aufhören, Grails aus dem Versuch zum erstellen der stacktrace.melden
Datei - es leitet nur, wo die stack-traces geschrieben werden.
Und später:
oder, wenn Sie nicht wollen, um die 'stacktrace' Appen an alle, konfigurieren
es als 'null' Appen:
log4j = {
appenders {
'null' name: "stacktrace"
}
}
Verbinde ich die 2 und erhalten die folgende Konfiguration:
//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"
}
Leider funktioniert das nicht:
INFO: Deploying web application archive MyBackend.Krieg
Sep 12, 2012 4:46:11 PM org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Fehler listenerStart
Sep 12, 2012 4:46:11 PM org.apache.catalina.core.StandardContext start
SCHWERER: Kontext [/MyBackend2] Start fehlgeschlagen aufgrund früherer Fehler
Zugegeben, es versucht nicht, zu schreiben stacktrace.log mehr, so das die Berechtigung verweigert " - Fehler nicht mehr geworfen, aber ich habe keine Ahnung, warum die app nicht mehr starten becaue das einzige was protokolliert wird "Fehler listenerStart"
Kann bitte jemand mir helfen mit der Konfiguration meiner app nur anmelden die stacktraces auf stdout?
- Ich fand heraus, dass ändern Sie die log4j-Eigenschaften in der Config.groovy funktioniert nur, nachdem die app gestartet wurde. Ich schließlich zu sehen bekam, der Grund für die "Fehler listenerStart" durch Eingabe von "tail-n 150 /var/log/tomcat6/localhost.2012-09-18.log" (bitte ändern Sie das Datum auf "heute", wenn Sie möchten, um zu sehen, die in der heutigen stacktraces)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grails Bug-report:
http://jira.grails.org/browse/GRAILS-2730
(enthält einige workarounds)
Wenn Sie wollen stacktraces auf stdout:
Stacktrace deaktivieren.log:
stacktraces zu Anwendungs-spezifische log-Datei in den Tomcat-logs-Verzeichnis
großes Lob zu diesem blog-post: http://haxx.sinequanon.net/2008/09/grails-stacktracelog/
Hier ist, was ich zu tun haben mit diesem:
Dies ermöglicht uns ordnungsgemäß zu behandeln, die bereitgestellt werden, als einen KRIEG in Tomcat, als auch in der Entwicklung. Es hat auch den Vorteil, dass mehrere grails-Anwendungen laufen innerhalb des gleichen Containers ohne mushing alle Ihre stacktrace-Protokolle zusammen.
Inspiration dazu kommt von @FlareCoder ist Antwort oben, sowie von @BurtBeckwith ist mailing-Liste posten.