Seite 1 von 1
Sauberes Loging in Modulen und Plugins a la Contenido?!
Verfasst: Mo 21. Nov 2011, 16:40
von rethus
Hallo Leute,
Contenido is ja schon recht umfangreich in Sachen Klassen, Funktionen etc. Genauso unübersichtlich ist der ganze Spaß.
http://www.conrepo.org/apidoc/contenido ... 8.11/html/
Meine Frage hier:
Wie würde man für Module und Plugins, im Sinne von Contenido ein wirklich sauberes Logging zustande bringen?
Also ich spreche hier von Fehler, Warnungen und Info-Meldungen.
Folgende Klassen fallen bei der API-Referenz sofort ins Auge:
- cBufferedLog
- cLog
- cModuleLog
- cNewsletterLog
- cNewsletterLogCollection
Über Tipps, Erfahrungswerte und Hinweise würd ich mich sehr freuen.
Re: Sauberes Loging in Modulen und Plugins a la Contenido?!
Verfasst: Mo 21. Nov 2011, 22:57
von xmurrix
Hallo rethus,
cLog: Schreibt jeden einzelnen Log-Eintrag in die Log-Datei (in contenido/logs/contenido.log).
cBufferedLog: Sammelt alle und hat eine Methode, um die gesammelten Logs in einem Rutsch in die Log-Datei zu schreiben. Basiert auf cLog. Sehe keinen großen Vorteil zu cLog, da cLog im Hintergrund PEAR Log verwendet. Dort wird das Datei-Handle beim ersten Logeintrag geöffnet und am Ende des Scripts wieder geschlossen.
cModuleLog: War wohl angedacht, um in Modulen zu debuggen. Mann muss dann das Modul vorher mit setModule($moduleid) setzen, damit die angedachten zusätzlichen Informationen in der Logdatei landen. Da es auf cBufferedLog basiert, muss man am Ende des Moduls die im Modul gesammelten Log-Einträge in die Log-Datei übernehmen. Dies ist meiner Meinung nach nicht sehr vorteilhaft.
cNewsletterLog/cNewsletterLogCollection: Das ist ganz was eigenes, extra für das Newsletter Plugin implementiert. Hier werden Log-Einträge in einer DB-Tabelle gespeichert.
Am Idealsten scheint hier clog zu sein. Hier braucht man nur eine Instanz zu erstellen und dann einfach einen Logeintrag zu schreiben. Allerdings lässt es sich nicht konfigurieren. Während man auf dem Entwicklungsserver gerne das Loggen aktiv haben möchte, sollte das ja auf dem Produktivserver wiederum deaktiviert werden. Keines der Klassen unterstützt eine solche Konfiguration. Ein eigener Logger der cLog erweitert und konfigurierbar ist, lässt sich aber einfach implementieren. Man sollte vermutich darauf achten, dass Applikationsweit nur eine Instanz von cLog vorkommt, da sonst pro Instanz ein Datei-Handle auf die Log-Datei erstellt wird.
Auch möchte man manchmal Inhalte von Variable leserlich debuggen, das ist mit diesen Log-Klassen nicht möglich, dafür gibt es die Debug-Klassen (sind auch nicht konfigurierbar).
Gruß
xmurrix
Re: Sauberes Loging in Modulen und Plugins a la Contenido?!
Verfasst: Do 24. Nov 2011, 11:27
von rethus
Danke, dass gibt mir schon mal ein klein wenig Einblick in die Sache, und zeigt direkt, dass das Logging mit Contenido scheinbar bisher nicht sonderlich ernst genommen wurde - andernfalls wären die Log-Klassen wohl etwas ausgefeilter (wie du ja schon erwähntest).
Nun ja, ich werde es mir mal anschauen und dann ggf. erstmal auf CLog zurückgreifen.
Ein Sauberes LoggingSystem wäre dennoch wünschenswert. Ggf. mit einem Mandanten oder System-Variablen-Schlüssel, der das System in "Entwicklungs-" oder "Live-Modus" schaltet, und entsprechend das Loging anpasst.
Re: Sauberes Loging in Modulen und Plugins a la Contenido?!
Verfasst: Do 24. Nov 2011, 11:32
von xmurrix
Die Überarbeitung des Loggings war, soweit ich mich erinnern kann, für die nächste Version angedacht. Es hat aber vermutlich eine geringere Prio als andere Todos...