2010-05-10 5 views
7

Ich habe die auf Konfigurationsprotokollierung folgende Datei:Wie kann ich einen relativen Pfad in einer Python-Logging-Konfigurationsdatei angeben?

[loggers] 
keys=root 

[handlers] 
keys = root 

[formatters] 
keys = generic 

# Loggers 
[logger_root] 
level = DEBUG 
handlers = root 

# Handlers 
[handler_root] 
class = handlers.RotatingFileHandler 
args = ("test.log", "maxBytes=1*1024*1024", "backupCount=10") 
level = NOTSET 
formatter = generic 

# Formatters 
[formatter_generic] 
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s 
datefmt = %Y-%m-%d %H:%M:%S 

In Entwicklung funktioniert dies sehr gut, aber wenn ich die Anwendung bereitstellen test.log in einem Pfad geschrieben werden versucht, in der ich das nicht habe notwendige Erlaubnis.

Meine Frage ist also, wie kann ich einen relativen Pfad in dieser Konfigurationsdatei angeben.

+2

Sicher test.log relativ ist hier schon - was passiert, wenn Sie einen volleren relativ setzen Pfad hier – Mark

Antwort

5

Markierung ist richtig, Ihr Pfad in der Konfigurationsdatei bezieht sich auf das aktuelle Verzeichnis, wenn der logging.config.fileConfig Aufruf erfolgt. Dies hängt von den Details Ihrer Bereitstellungsmethode ab.

Möglicherweise müssen Sie einen absoluten Pfad zu Ihrer Datei angeben, indem Sie "test.log" mit einem Verzeichnis versehen, von dem Sie wissen, dass es während des Prozesses, in dem der Code ausgeführt wird, schreibbar ist.

Ein anderes Problem könnte ein Berechtigungsproblem mit dem Benutzer sein, unter dem Ihr Django-Prozess ausgeführt wird: Normalerweise wird der Entwicklungsserver unter Ihrem Konto ausgeführt und Sie werden normalerweise keine Berechtigungsprobleme feststellen. Bei der Bereitstellung (z. B. mit Apache und mod_wsgi) wird der Apache-Prozess und/oder der mod_wsgi-Daemon-Prozess unter verschiedenen Konten ausgeführt, denen möglicherweise Berechtigungen für den entsprechenden Ordner erteilt werden müssen.

Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte weitere Informationen über Ihre Bereitstellung in Bezug auf die Methode, die Lage der Protokolldateiverzeichnis geben usw.

+0

Ok, kein Problem Ich werde den absoluten Pfad zu test.log hinzufügen und weitermachen :) Ich dachte nur, dass es eine Änderung gab, um einen relativen Pfad zur Datei conf anzugeben :) –

Verwandte Themen