Kann ich mit nginx error_log den gesamten Stacktrace speichern?

1102
Kit Sunde

Ich habe eine Django-App, die auf fastcgi ausgeführt wird. Wenn es eine Ausnahme gibt, scheint es, als würde sie in den Protokollen abgeschnitten error.log:

2012/06/10 19:25:55 [error] 1416#0: *19219 FastCGI sent in stderr: "Traceback (most recent call last): File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/flup/server/fcgi_base.py", line 574, in run protocolStatus, appStatus = self.server.handler(self) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/flup/server/fcgi_base.py", line 1159, in handler result = self.application(environ, start_response) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 273, in __call__ response = self.get_response(request) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/core/handlers/base.py", line 209, in handle_uncaught_exception 'request':request File "/usr/local/lib/python2.7/logging/__init__.py", line 1154, in error self._log(ERROR, msg, args, **kwargs) File "/usr/local/lib/python2.7/logging/__init__.py", line 1246, in _log self.handle(record) File "/usr/local/lib/python2.7/logging/__init__.py", line 1256, in handle self.callHandlers(record) File "/usr/local/lib/python2.7/logging/__init__.py", line 1293, in callHandlers hdlr.handle(record) File "/usr/local/lib/python2.7/logging/__init__.py", line 740, in handle self.emit(record) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/utils/log.py", line 101, in emit html_message=html_message) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/core/mail/__init__.py", line 96, in mail_admins mail.send(fail_silently=fail_silently) File "/home/deploy/.virtualenv/mediapop/lib/python2.7/site-packages/django/core/mail/message.py", line 251, in send return self.get_connection(fail_silently).send_messages([self]) File "/home/deploy/.virtualenv/mediapop/li 

Kann ich Abhilfe schaffen, damit ich die vollständige Stapelverfolgung habe?

1

1 Antwort auf die Frage

2
Mark Stosberg

Ich empfehle Ihnen, Ihr Webserver-Fehlerprotokoll und Ihr Anwendungsfehlerprotokoll getrennt zu halten. Dadurch werden zwei Schichten Ihres Stacks sauber voneinander getrennt, da die Webserver-Protokolle die Fehler auf http-Ebene enthalten, während das Anwendungsprotokoll Ausnahmen enthält, die von Ihrem Code und anderen von Ihnen generierten benutzerdefinierten Protokollen ausgelöst werden.

Dieser Beitrag enthält weitere Informationen zur Django-Fehlerprotokollierung, einschließlich Empfehlungen für andere Optionen zum Protokollieren Ihrer Django-Stack-Spuren.