Forum: PC-Programmierung Realtime programm und syslog


von Operator S. (smkr)


Lesenswert?

Zurzeit arbeite ich an einer realtime Anwendung auf linux, mit einem 
selbstgeschriebenem Logger.
Dabei wird das Programm gestartet, welches den realtime Thread erzeugt 
und daneben einen Logging Thread. Insgesamt laufen also 3 Threads, wobei 
die beiden nicht-logger in einen Buffer schreiben können, der dann durch 
denn Logging Thread ausgetauscht und geleert wird (print auf console, 
oder Weiterleitung in Datei/Socket/...)

Dieser Logger wurde von einem Arbeitskollegen geschrieben, der nicht 
mehr hier arbeitet. Das Problem ist nun, dass die Logs vom RT-Thread 
nicht ausgegeben werden.

Um die Wartbarkeit zu erhöhen, würde ich am liebsten den Logger Code 
rausschmeissen und syslog benutzen, welches bereits im Kernel enthalten 
ist.

Nun meine Frage, bevor ich all die Teile umschreibe, welche Loggen, kann 
das mit der realtime Bedingung funktionieren? Es dürfte nämlich nicht 
geschrieben werden, solange mein RT-Thread läuft, sondern erst danach.
Ich habe schon gelesen, dass syslog thread-safe sei, aber reicht dies 
aus?

von Clemens L. (c_l)


Lesenswert?

Es gibt keine RT-Garantie für die syslog()-Funktion. Du brauchst immer 
noch einen separaten Thread.

von Operator S. (smkr)


Lesenswert?

Clemens L. schrieb:
> Es gibt keine RT-Garantie für die syslog()-Funktion.

Was sind denn die Auswirkungen?
Gehen Logmeldungen einfach verloren, oder wartet meine Applikation, bis 
syslog die Nachrichten auf der Platte geschrieben hat?

von Clemens L. (c_l)


Lesenswert?

syslog() könnte auf Platte, Netzwerk, oder sonstige Geräte zugreifen und 
hat deshalb keine Obergrenze für die Ausführungszeit.

In der Praxis kommuniziert syslog() einfach nur mit dem syslog-Daemon 
über das /dev/log-Socket, was bedeutet, dass nebenher noch ein separater 
Prozess werkelt.

Aber dein Problem ist ja anscheinend die Kommunikation deiner Threads 
untereinander; da wird das Austauschen des Loggers nicht helfen.

von (prx) A. K. (prx)


Lesenswert?

Syslogging über UDP/lookback dürfte ziemlich narrensicher sein, was das 
Zeitverhalten des Meldenden angeht. Da gibts kaum einen Grund, weshalb 
es klemmen sollte. Nur ist damit natürlich auch nicht gesichert, dass es 
überhaupt irgendwo ankommt.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.