Questions & Answers

SOLVED
Pierced
I'm new here

BeanShell: Abfangen von Fehlern

Jump to solution

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.

0 Kudos
1 Solution

Accepted Solutions
gockel
Crownpeak employee

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:

scriipt_hurz.jpg

View solution in original post

0 Kudos
3 Replies
gockel
Crownpeak employee

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:

scriipt_hurz.jpg

0 Kudos

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).

0 Kudos

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.

Peter

Type a product name