Logging in eine oder mehrere Files?

12/26/2013 12:56 EasyTale#1
Hallo,

da ich einen Gameserver für ein Spiel schreibe, möchte ich dementsprechend auch alles protokollieren d.h. ob der Server reibungslos läuft, ein- / ausgehende Verbindungen, Anfragen am Server & Datenbank Querys.

Als Logging Library habe ich mir dann pantheios besorgt, soll einer der schnellsten sein, was die Performance Diagramme auch bestätigen.
Das Problem dabei ist, dass das Multi-File-Logging von verschiedenen Threads aus, problematisch wird.
Somit dachte ich mir, logge ich einfach alles in eine Datei und lasse die später per externen Tool parsen.
Da pantheios alles regelt (hinsichtlich der performance) und selbstverständlich auch Thread safe ist, währe das doch keine schlechte idee, oder?

Was meint ihr? Oder wie würdet ihr das machen?
Lasst mich eure Ratschläge hören.
12/26/2013 13:50 tolio#2
In eine Datei zu loggen und dann nachher zu parsen ist kein Problem. Die Frage ist nur ob aus verschiedenen Threads in eine Datei oder in mehrere Dateien Loggen nen unterschied macht. Denn bei beiden Varianten kanns zu Problemen kommen. Sinnvoller wäre es meiner Meinung nach aus allen Threads die selbe Instanz der Logging Klasse anzusprechen um so das ganze Elegant zu umschiffen.
12/26/2013 13:57 EasyTale#3
Quote:
Originally Posted by tolio View Post
In eine Datei zu loggen und dann nachher zu parsen ist kein Problem. Die Frage ist nur ob aus verschiedenen Threads in eine Datei oder in mehrere Dateien Loggen nen unterschied macht. Denn bei beiden Varianten kanns zu Problemen kommen. Sinnvoller wäre es meiner Meinung nach aus allen Threads die selbe Instanz der Logging Klasse anzusprechen um so das ganze Elegant zu umschiffen.
Hätte ich noch erwähnen sollen, es wird nur eine Instanz angesprochen. :)
Aber ansonsten sollte es deiner Meinung nach kein problem darstellen?
12/26/2013 14:26 MrDami123#4
Wenn du alles in eine Datei loggst, musst du um Probleme zu vermeiden und wenn du es mit Threads machst, eine Art Warteschlange erstellen.
Ich denke die Verwendung von "Lock" und "Acquire" ist relativ universell.
Dabei wird einfach der Zugriff auf die jeweilige Datei gesperrt solange jemand was reinschreibt, wenn er zu Ende geschrieben hat, wird die Datei wieder für andere Threads verfügbar.
Somit entstehen keine Fehler und du kannst alles in eine schreiben.