Log-Datei Schreiben unter Linux
Hallo,
ich möchte ein einfaches Logfile unter Linux erstellen im Pfad '/var/log/mylog.log' Unter Windows funktioniert dieses einwandfrei, aber unter Linux wird nichts geschrieben.
Code:
Nachtrag: \ gegen / getauscht
var
tf_logfile: TextFile; begin AssignFile(tf_logfile, '/var/log/mylog.log'); if not FileExists('/var/log/mylog.log') then begin {$I-} Rewrite(tf_logfile); end; if IOResult <> 0 then exit; {$I-} append(tf_logfile); writeLn(tf_logfile, 'Eintrag'); flush(tf_logfile); closeFile(tf_logfile); |
AW: Log-Datei Schreiben unter Linux
Hallo,
bist Du sicher, dass Du in /var/log überhaupt Schreibrechte hast? Das ist doch ein Verzeichnis für System-Logs wie z.B. messages? |
AW: Log-Datei Schreiben unter Linux
Sofern das Programm nicht mit Superuser-Rechten (aka root) ausgeführt wird, ist das auch nicht weiter verwunderlich, denn standardmäßig hat kein User Schreibrechte in /var/log.
Außerdem sollte man sich sehr zurückhalten mit dem direkten Schreiben von Logfiles unter Linux, insbesondere in /var/log, denn nicht zum Spaß gibt es sogenannte Syslog-Facilities, d.h. Programme sollten ins Syslog schreiben und im jeweiligen Syslog-Daemon wird dann eingestellt, in welches Logfile die Meldungen aus dieser Facility geschrieben werden sollen: Beispiel für Ubuntu bei Thomas Krenn. Leider hab ich keine Ahnung, was man tun muss, um in einem eigenen Programm ins Syslog zu schreiben - vielleicht gibt's dafür schon fertige Units, an die man andocken kann? Grüße Dalai |
AW: Log-Datei Schreiben unter Linux
Es handelt sich um ein ApacheLinkModul, und da Apache auch in \var\log\apache2\ seine Logs schreibt, dachte ich mir, dass es dort gut aufgehoben ist.
Das LinkModul wird ja auch im Rechtekontext des Apache ausgeführt... |
AW: Log-Datei Schreiben unter Linux
Von den Rechten einmal abgesehen, kommt Linux mit den Backslashes eigentlich klar?
|
AW: Log-Datei Schreiben unter Linux
Zitat:
|
AW: Log-Datei Schreiben unter Linux
Wie klinkst du dich denn in den Apache ein? Es muss doch irgendein Interface oder sowas geben, das der Apache nutzen kann, Informationen von den Modulen abzufragen (und umgekehrt).
In der offiziellen Anleitung Developing modules for the Apache HTTP Server 2.4 finden sich Angaben zu diversen Hooks, unter anderem auch zum Logging (mein Suchbegriff auf der Seite war schlicht "log"). Denn eigentlich sollte das der Weg sein, dem Apache die Logmeldungen einfach nur zu übergeben, und über die Apache Konfig (z.B. im VHost) wird dann festgelegt, was in welchem Log landen soll. (Nur zur Info: Es gibt unter Linux diverse Daemons, die tatsächlich am Syslog vorbei arbeiten/protokollieren, z.B. Apache, Bind9, MySQL, Postgres usw. Aber manchmal - auch im Fall vom Apache - lässt sich dort analog zum Syslog konfigurieren, was mit welchem Loglevel in welche Datei geschrieben werden soll.) Grüße Dalai |
AW: Log-Datei Schreiben unter Linux
@Dalai: Das wird wohl der korrekte Weg sein, die Logmeldungen an den Apache zu übergeben und diese dann im VHost zu konfigurieren.
Mein Ziel war es jedoch nur ein paar Infos aus dem Apache LinkModul in eine Textdatei wegzuschreiben. Das müsste auch nicht zwingend nach /var/log/.. sein. War vielleicht zu einfach gedacht. Was mich nur interessiert: Warum geht das nicht? Was ist der Grund dafür? |
AW: Log-Datei Schreiben unter Linux
Zitat:
Nur nebenbei: Selbst wenn du die Zugriffsrechte dieses Verzeichnisses anpassen solltest, kann es immer noch sein, dass du von AppArmor, SELinux oder chroot daran gehindert wirst, dorthin zu schreiben. Konkretes Beispiel aus meiner eigenen Erfahrung: MySQL aufgesetzt, in dessen Konfig das Datenverzeichnis vom standardmäßigen /var/lib/mysql geändert auf /media/daten/mysql und anschließend gewundert, warum das Starten des MySQL fehlschlägt, obwohl das Verzeichnis für jedermann les- und schreibbar war (und dem Nutzer mysql gehörte). Lösung war, dem AppAmor zu sagen, dass MySQL in /media/daten/mysql lesen und schreiben darf. Grüße Dalai |
AW: Log-Datei Schreiben unter Linux
Vielen Dank für die Erklärung.:thumb: Das erklärt nun einiges zum Verhalten unter Linux...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz