Speicherort des Python-FehlerprotokollsPython

Python-Programme
Anonymous
 Speicherort des Python-Fehlerprotokolls

Post by Anonymous »

Ich entwickle eine Python-Anwendung auf dem Flask-Framework. Und ich verwende .wsgi, um es bereitzustellen. Die Speicherorte der Fehlerprotokolle haben mich verwirrt. Es sieht so aus, als ob Python-Fehler und Debug-Informationen in verschiedenen Protokolldateien abgelegt werden.

Zuerst gebe ich sowohl die Zugriffs- als auch die Fehlerprotokollspeicherorte in der Apache vhost-Datei an.

Code: Select all

...
CustomLog /homedir/access.log common
ErrorLog /homedir/error.log
...

Ich weiß auch, dass es ein weiteres Apache-Fehlerprotokoll gibt, /var/log/httpd/error_log. Meine Zugriffsprotokolle wurden an der richtigen Stelle gedruckt: /homedir/access.log.

Aber das Fehlerprotokoll sieht seltsam aus. Die Python-Fehler, wie SyntaxError, nicht abgefangene Ausnahmen, gingen in die Protokolldatei, die in der vhost-Datei angegeben ist (

Code: Select all

/homedir/error.log
). Alle vom Python-Logging-Modul generierten Protokollmeldungen wurden jedoch in das „Standard“-Fehlerprotokoll verschoben (

Code: Select all

/var/log/httpd/error_log
).

Kann jemand erklären, warum das passiert und wie man es beheben kann? Ich möchte, dass diese beiden Protokolle an derselben Stelle gespeichert werden.



Danke für die Kommentare. Hier ist der Code, den ich für den Logger eingerichtet habe

Code: Select all

import logging

# I didn't specify the stream, so it suppose to be stderr
# Don't know why stderr points to apache /var/log/*, rather than my error log

stream_handler = logging.StreamHandler()
formatter = logging.Formatter("%(levelname)s : %(pathname)s:%(lineno)s - %(msg)s")
stream_handler.setFormatter(formatter)

logger = logging.getLogger('foo')
logger.addHandler(stream_handler)
logger.setLevel(logging.DEBUG)
Dann habe ich Nachrichten auf diese Weise protokolliert.

Code: Select all

import logging
logger = logging.getLogger('foo.bar')

logger.debug('Some debug information')
Das Protokoll wird jedoch nach /var/log/httpd/error_log verschoben und nicht in das in der Apache-Vhost-Datei angegebene Protokoll.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post