Search the FirstSpirit Knowledge Base
Ich habe mal wieder eine Frage :smileyconfused: ... eher eine Anregung:
Ist es möglich, Fehler abzufangen, die ein Beanshell produziert? Ich meine Laufzeitfehler aller Art.
Die Situation ist:
Bei einem BeanShell-Skript fehlte ein Import-Statement.
Es wurde jedoch an keiner Stelle ein Fehler ausgegeben. Ist es möglich, diesen Fehler irgendwo sichtbar zu machen - vielleicht in einer globalen Variable, die man am Ende des Renderings einer Seite auslesen könnte?
Das würde die Suche nach Fehlern ungemein erleichtern.
Hallo Georg,
kannst du bitte näher beschreiben wie das Skript aufgerufen wird und was der Fehler ist.
Bei mir funktioniert das nämlich einwandfrei.
Template:
=======
blubs
$CMS_RENDER(script:"hurz")$
=======
Skript:
=====
context.logInfo("start");
context.logInfo(MyNotImportedClass.class);
=====
Fehler der Vorschau:
Hallo Georg,
kannst du bitte näher beschreiben wie das Skript aufgerufen wird und was der Fehler ist.
Bei mir funktioniert das nämlich einwandfrei.
Template:
=======
blubs
$CMS_RENDER(script:"hurz")$
=======
Skript:
=====
context.logInfo("start");
context.logInfo(MyNotImportedClass.class);
=====
Fehler der Vorschau:
Danke... gewusst wie, dann klappt's auch 🙂
Trotzdem noch als Anregung:
Wenn man eine Variable (etwa #global.preview.errors o.ä.) mit genau solchen Fehlern auslesen könnte, wäre das eine noch größere Hilfe für die Entwicklung:
So könnte man sich die Fehler direkt am Ende einer Seite ausgeben lassen.
(Wir benutzen ein Flag, um Debug-Meldungen schon während des Renderings ein/ausschalten zu können).
Das gibt es schon:
$CMS_SET(#global.collectLogs, 4)$ $-- -1: off, 0: TRACE, 1: DEBUG, 2: INFO, 3: WARN, 4: ERROR --$
...some template code..
$CMS_FOR(logEntry, #global.logs)$
$CMS_VALUE(entry)$<br />
$CMS_END_FOR$
(Achtung, den Code habe ich so hingeschrieben, bestimmt fehlt irgendwo eine Klammer)
Code ist für FirstSpirit ab v4, unter v3.1 war die Syntax etwas anders.
[EDIT]
Noch paar Hinweise: Am besten, man beschränkt das Sammeln von Log-Meldungen auf die Vorschau. Ansonsten sollte man nach der Ausgabe die Liste noch zurücksetzen (#global.resetLogs).
Für "#global.collectLogs" sollten ab 4.1 statt der Zahlen auch "null" für "aus" und die Namen des Log-Levels ("WARN", "ERROR", etc.) funktionieren.
Es werden übrigens immer auch die Meldungen mit höherem Level eingesammelt, für INFO also auch WARN und ERROR.