log verzeichnis

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Hi

ich habe ein kleines Programm in Python geschrieben und ich logge im Verzeichnis programmname/log

Wenn man das skript allerdings von woanders startet, dann erwartet das skript ein verzeichnis log da wo es sich gerade befindet (es versucht eine datei zu erstellen namens /log/datum.log) wenn log nicht existiert, dann gibs natuerlich eine Fehlermeldung

wie kann ich es machen, dass das bereits existierende log verzeichnis benutzt wird?

das verzeichnis log hat eine __init__.py datei, kann ich herausfinden, wo das modul log sich befindet und dann dort meine logfiles ablegen? ist das ein guter weg?

danke

ciao
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Der Pfad in dem sich ein Modul befindet ist unter ``__file__`` im betreffenden Modul erreichbar. Das kannst du mit ``os.path.join(__file__, 'log')`` verwenden um den Pfad zum ``log``-Ordner zu bekommen.

Andererseits ist das etwa auf Linux-Systemen problematisch, wo man sicherlich nicht in den Applikationspfad loggen will sondern meist nach ``/var/log[programmname/]``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

weiß nicht welches OS Du nutzt, aber anhand der '/' vermute ich mal irgendein Linux-Derivat.

In dem Fall würde ich unter ~/logverzeichnis loggen. Das ist - einmal angelegt - immer da und immer am selben Ort. Du kannst das Verzeichnis nach Deinem Programm nennen oder ein Unterverzeichnis zu ~/opt erstellen oder was auch immer sich so auf Deinem (Ziel-)System sich so tummelt. (Verstecke Verzeichnisse sind u. U. auch eine Option.)
Auf diese Weise hast Du einen konstanten, quasi-absoluten Pfad. Oder Du müsstest rel. aufwendig drumherum programmieren, damit Du immer und überall mit demselben relativen Pfad zum Pfad Deines Installations- oder Programmierverzeichnis bist.
Oder Du legst immer da wo Dein Skript gerade läuft ein Verzeichnis ./logverzeichnis an.

Jetzt mußt Du entscheiden, was für Deine Anwendung aus diesen Ideen und denen, die kommen, das Beste für Dich ist.

Gruß,
Christian
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

ich habs so gemacht, dass man in einem config file ein logdirectory angeben kann (absolut und relativ)

er versucht dann das verzeichnis zu finden, wenn nicht, werden in dem verzeichnis, in dem das skript aufgerufen wird, die log dateien abgelegt.

das is in so fern ok, da diese log dateien nur eine bestaetigung sind feur sachen die das programm im hintergrund macht. nach beende schaut man die sich an und das wars dann

und da die leute das skript immer aus nem working direktory starten isses auch ok

ware es fuer die allgemeinheit wuerd ich wohl unter ~/programmelogs loggen, da das skript unter windows und linux laeuft und unter windows sowas wie var/log ja nicht da is


danke

ciao
Antworten