faileNwebmedia

Tutorial: Dynamischer Logger

Das Szenario

Man stelle sich vor, man entwickelt zunächst eine kleine Applikation, welchen Sinn auch immer sie haben mag. Mit der Zeit wächst das kleine "Progrämmchen" zu einem ausgewachsenem "Programm". So oder ähnlich ist es meistens: Eine Sache wächst und wächst - bis sie irgendwann nicht mehr wartbar ist und man vor einem riesigen "Code"-Haufen steht, mit dem man nichts mehr anfangen kann. Vorteile hat man hier ganz klar, wenn man sich der Objekt-Orientierten Programmierung (OOP) verschrieben hat. Das bedeutet, ein Programm aus kleinen modularen Teilen zusammenzusetzen, die später das Gesamtbild formen und jederzeit durch entsprechende ähnliche Vertreter ausgetauscht werden können. In diesem kleinen Tutorial möchte ich Euch zeigen, wie diese Austauschbarkeit zum Beispiel mit einem Logger-System aussehen könnte. Dieser Logger ist keineswegs perfekt, noch besonders hilfreich. Er soll einfach zeigen, welche Flexibilität man durch bestimmte Logik-Konstrukte in OOP abbilden kann.

Der Logger im Allgemeinen

Ein Logger (vom Englischen "to log"), hat in einer Applikation die Aufgabe bestimmte Aktionen oder Ereignisse auf eine bestimmte Art und Weise aufzuzeichnen. So können beispielsweise Probleme in der Applikation schneller erkannt werden. Jedoch muss ein Log nicht unbedingt nur negative Sachen, wie etwaige Fehler in der Software, festhalten, sondern auch ganz neutrale Ereignisse. Darunter würde zum Beispiel fallen, aufzuzeichnen, wann sich ein bestimmter User an der Applikation angemeldet hat und welche Aktionen er während seiner Sitzung unternommen hat. Was aufgezeichnet werden soll und was nicht, bestimmt der Entwickler in der Applikationslogik. Tritt ein bestimmtes Ereignis auf, welches aufgezeichnet ("gelogged") werden soll, muss der Entwickler dafür sorgen, dass der Logger darüber informiert wird. Das bedeutet, der Logger muss explizit angewiesen werden, beispielsweise einen kurzen Textstring zum gewünschten Ereignis irgendwo abzuspeichern, sodass er später wieder abgerufen werden kann.

Soweit die Theorie zu "Was soll der Logger machen?". Nun müssen wir uns aber ebenfalls fragen: "Wie soll der Logger das machen?". In diesem Fall meine ich mit dieser Frage eigentlich genauer gesagt das "Wo und in welchem Format soll ich die Lognachrichten speichern?". Ein Logger könnte beispielsweise immer eine neue Zeile (pro Lognachricht) in eine bestimmte Textdatei speichern. Ebenfalls denkbar wäre das Speichern der Nachrichten in einer Datenbank, welches Format diese auch immer haben mag (relational, dateibasiert, ...). Ein Logger könnte selbstverständlich bei einem Ereignis auch eine E-Mail mit der Lognachricht an eine bestimmte Adresse senden oder gar eine SMS. Natürlich sind das nur einige Möglichkeiten - Jeder mag sicherlich seine eigenen Wünsche und Ideen haben, wie er über ein bestimmtes Ereignis in seiner Applikation benachrichtigt werden will. Natürlich ist es auch möglich alle der oben genannten Möglichkeiten gleichzeitig durchzuführen. Genau diesen Sachverhalt abzubilden, wird ein Leichtes sein, wie das konkrete Beispiel im weiteren Verlauf zeigen wird.

Bevor wir jedoch damit anfangen können, möchte ich an dieser Stelle kurz den Unterschied zwischen den Begriffen Logger und Writer verdeutlichen. Einem Logger werden Lognachrichten übergeben. Diese werden dann intern verarbeitet. Die interne Verarbeitung wird wiederum von Writern vorgenommen. Writer sind die Instanzen, die eine, vom Logger erhaltene Lognachricht, irgendwohin schreiben, z.B. in eine Textdatei oder in eine Datenbank.

Auf der nächsten Seite wir gezeigt, wie eine Logger-Klasse aussehen könnte. Das heißt dort geht es ans Eingemachte :o)

[Alex Sawallich @ 29.05.2011 - 15:23:44h]

Comments

Unfortunately there are no comments yet :(. Be the first to post a comment by using the form beneath.

Post a comment

  _____     ______   _____      _____   
 |__  //   /_   _// |  __ \\   |  ___|| 
   / //     -| ||-  | |  \ ||  | ||__   
  / //__    _| ||_  | |__/ ||  | ||__   
 /_____||  /_____// |_____//   |_____|| 
 `-----`   `-----`   -----`    `-----`  
                                        

Please type in the 4 letters you see.