Logging in Templates

Hallo zusammen,

in unseren Projekten haben wir häufig die Anforderung auch in Templates Fehler oder Info Logging zu implementieren.

Einfach um beispielsweise Feldprüfungen und die daraus resultierenden Ergebnis besser im Log lesbar und somit verständlicher zu machen.

Momentan setzen wir dabei auf folgenden Code-Schnipsel:

$CMS_SET(void,#global.logInfo("Element is not valid for '"+p_reference.uid+"'. Skipping element." ))$

Dies hat leider den Nachteil, dass die Zeile zweimal ausgegeben wird. Einmal der Quelltext und anschließend mit Werten. Zudem sieht es im Code nicht schön aus wenn ein $CMS_SET()$ für etwas anderes verwendet wird als eine Variable zu setzen.

Daher würde ich mir das Folgende als mögliche Implementierung vorstellen:

// Log mit Nachrichtenformat

$CMS_LOG(level:"info", messageFormat:"Element is not valid for '{0}'. Skipping element from output '{1}'.", messageObjects:[p_reference.uid, param2])$

// Einfaches log

$CMS_LOG(level:"debug", message:"Element is not valid for. Skipping element.")$

Das Ergebnis sollte ein Logeintrag im Generierungslog sein. Um die Analyse des Logs später etwas zu vereinfachen sollte in der Logausgabe automatisch auch immer drin stehen welches Template den Logeintrag generiert hat.

Damit könnte man Templateweite Log-Einträge implementieren um auch fachliche Anforderungen an die Templates besser im Log zu visualisieren.

Viele Grüße

Oliver Granseier

5 Comments
Radigewski
Occasional Collector

Klingt toll, jedoch frage ich mich, ob man das Feature künftig auch noch braucht, da es in 5.1 doch einen Debugger gibt?

feddersen
Community Manager
Community Manager

Die Dopplung kann man vermeiden, indem man ein CMS_VALUE statt einem CMS_SET nutzt. $CMS_VALUE(#global.logInfo("mymessage"))$

granseier
I'm new here

Hallo Thomas,

debuging ersetzt kein logging. Ich debugge erst etwas wenn ich ein Problem analysiere und beheben möchte. Beim Logging geht es mir darum einen bekannten möglichen Fehler oder einen Vorgang erkenntlich zu machen.

granseier
I'm new here

Hallo Christoph,

danke für den Hinweis jedoch ist doch $CMS_VALUE()$ zur Ausgabe von Informationen gedacht und nicht um Methodenaufrufe auszuführen.

Genauso wie das $CMS_SET()$ welches nicht dafür gedacht ist um solche Aufrufe auszuführen. Es funktioniert zwar ist aber nicht schön.
Mein Vorschlag richtet sich einfach daran besseren Template-Code zu ermöglichen und nicht einfach nur ob man es machen kann oder nicht.

Die Semantic geht einfach verlohren, wenn man einfach $CMS_SET()$ und $CMS_VALUE()$ mißbraucht. Dies sorgt für einen schlecht lesbaren Code.

MichaelaReydt
Community Manager
Community Manager

Hallo Oliver,

vielen Dank für deine Idee zur Verbesserung von FirstSpirit. Es ist uns wichtig, aus den Erfahrungen unserer Kunden und Partner zu lernen. Aus diesem Grund schätzen wir Feedback und freuen uns über jede Anregung.

Wir haben das Thema noch einmal evaluiert, haben aber keine Pläne, es in absehbarer Zukunft zu bearbeiten. Daher können wir deinen Feature Request zum aktuellen Zeitpunkt leider nicht berücksichtigen.

Detaillierte Informationen bezüglich des Auswahlprozesses der Requests, die wir umsetzen, haben wir in unserer Features Policy zusammengefasst.

Viele Grüße

Michaela