Bedrock Error Page |
You can customize the error.roc page if you'd like or replace it. You probably don't want to spill code to users in a production environment.
To specify your own custom error page, set the BEDROCK_ERROR_LOCATION variable in the tagx.xml file to the fully qualified path of your own Bedrock file.
<scalar name="BEDROCK_ERROR_LOCATION">/var/www/html/error.roc</scalar>
Bedrock exposes the $ERROR object that has several methods you can use to report the error.
$ERROR.mesg() - the error message
$ERROR.line() - the line number where the error was encountered.
$ERROR.file() - the name of the file where the error occurred.
$ERROR.view_source() - an HTML representation of the source code.
Simple Example
This example uses the $ERROR object to display the error message, location of the error, and the file that was being processed when the error occurred.
<html>
<body><h1>Whoops! We're sorry, our slip is showing!</h1>
<pre>
message: <var $ERROR.mesg()>
location: <var $ERROR.line()>
file: <var $ERROR.file()>
source: <var $ERROR.view_source()>
</pre>
</body>
</html>
E-Mail Me the Error
Here's an example error page that will give the user a message and send an email to the developers notifying them of an error...I'm using the $SMTP plugin distributed with Bedrock to email the error message.
<html>
<body>
<h1>Whoops! We're sorry, our slip is showing...</h1>
<i>Thanks for your patience...our staff is on it!</i>
<plugin:SMTP localhost rlauer6@comcast.net rlauer6@comcast.net>
<null $SMTP.subject('A Bedrock Error has occurred!')>
<null $SMTP.header('Content-Type', 'text/html')>
<sink $SMTP>
An error has occurred <b><var $ERROR.file()>[<var $ERROR.line()>]</b>
<hr>
<b>REMOTE_ADDR:</b> <var $env.REMOTE_ADDR>
<b>SERVER_ADDR:</b> <var $env.SERVER_ADDR>
<hr>
<pre>
File: <var $ERROR.file()>
Line: <var $ERROR.line()>
<span style="color:red;"><var $ERROR.mesg()></span>
</pre>
</sink>
</body>
</html>
...and voila! I get an email when an error occurs.