AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Log-Datei Schreiben unter Linux

Ein Thema von lowmax_5 · begonnen am 18. Sep 2019 · letzter Beitrag vom 18. Sep 2019
Antwort Antwort
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
252 Beiträge
 
Delphi 10.3 Rio
 
#1

Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 17:58
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:
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);
Nachtrag: \ gegen / getauscht

Geändert von lowmax_5 (18. Sep 2019 um 20:44 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.024 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 19:36
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?
Heiko

Geändert von hoika (19. Sep 2019 um 07:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.609 Beiträge
 
Delphi 5 Professional
 
#3

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 19:44
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
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
252 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 19:50
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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.310 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 20:09
Von den Rechten einmal abgesehen, kommt Linux mit den Backslashes eigentlich klar?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
252 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 20:43
Zitat:
Von den Rechten einmal abgesehen, kommt Linux mit den Backslashes eigentlich klar?
Oops, ich meinte natürlich /var/log/mylog.log . Soviel habe ich auch schon mit bekommen, dass es diesen Unterschied gibt ..
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.609 Beiträge
 
Delphi 5 Professional
 
#7

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 22:00
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
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
252 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 22:14
@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?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.609 Beiträge
 
Delphi 5 Professional
 
#9

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 22:38
Was mich nur interessiert: Warum geht das nicht? Was ist der Grund dafür?
Zugriffsrechte. Der Apache dürfte als Nutzer www-data laufen, Schreibrechte unter /var/log/apache2 hat aber nur root (so ist jedenfalls die Konfiguration auf einem Ubuntu). Damit Apache selbst dort schreiben kann, hat dieser einen einzelnen Prozess als Nutzer root laufen; dieser Prozess dürfte aber nicht mit der Bearbeitung von HTTP-Requests beschäftigt sein sondern kümmert sich eben um Dinge, die mehr Rechte erfordern, z.B. Logging.

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
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
252 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Log-Datei Schreiben unter Linux

  Alt 18. Sep 2019, 22:48
Vielen Dank für die Erklärung. Das erklärt nun einiges zum Verhalten unter Linux...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf