[hunchentoot-devel] cgitb
Ron Garret
ron at flownet.com
Sat Aug 28 16:35:51 UTC 2010
Thanks!
Here's what I came up with that seems to work:
(defvar *devel-mode* nil)
(defun devel-mode-handler (condition)
(when *devel-mode*
(throw 'page-handler-done
(format nil "<h1>Error</h1>~%~A<br>~%<pre>~%~A~%<pre>~%"
condition (html-escape (tbnl::get-backtrace))))))
(defmacro defpage (url &body body)
...
(catch 'page-handler-done
(handler-bind ((error 'devel-mode-handler))
(html :page , at body)))))))
rg
On Aug 28, 2010, at 4:29 AM, Leslie P. Polzer wrote:
>
> Ron Garret wrote:
>> Is there any straightforward way to get a backtrace-on-error displayed on the browser
>> screen instead of being logged to a file, like Pythons' cgitb package does? I tried
>> this:
>>
>> (defun error-handler (arg) [code-to-generate-backtrace])
>>
>> (setf *HTTP-ERROR-HANDLER* 'error-handler)
>>
>> but that doesn't work because by the time error-handler is called the server has already
>> exited the error context.
>
> Here's what we're using in Weblocks:
>
> http://bitbucket.org/S11001001/weblocks-dev/src/tip/src/request-handler.lisp#cl-60
> http://bitbucket.org/S11001001/weblocks-dev/src/tip/src/error-handler.lisp#cl-35
>
> HTH,
>
> Leslie
>
>
> _______________________________________________
> tbnl-devel site list
> tbnl-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/tbnl-devel
More information about the Tbnl-devel
mailing list