Index: /branches/releng-9.0/nanobsd/files/usr/local/www/wlportal/index.cgi
===================================================================
--- /branches/releng-9.0/nanobsd/files/usr/local/www/wlportal/index.cgi	(revision 10799)
+++ /branches/releng-9.0/nanobsd/files/usr/local/www/wlportal/index.cgi	(revision 10804)
@@ -30,7 +30,35 @@
 # Author  : Rick van der Zwet <info@rickvanderzwet.nl>
 # Licence : BSDLike http://wirelessleiden.nl/LICENSE
-import cgitb
-cgitb.enable(logdir="/tmp")
-
+
+class MultiTracebackHook:
+  """A hook to replace sys.excepthook that shows tracebacks in syslog & HTML (using cgitb)"""
+  def __init__(self, ident=None, enable=False):
+    self.ident = ident
+    if enable:
+      self.enable()
+
+  def __call__(self, etype, evalue, etb):
+    self.handle((etype, evalue, etb))
+
+  def handle(self, info=None):
+    import cgitb
+    import os
+    import sys
+    import syslog
+    import traceback
+    info = info or sys.exc_info()
+    tb = traceback.format_exception(*info)
+    if self.ident:
+      syslog.openlog(self.ident)
+    prefix = '[%i]' % os.getpid() 
+    for line in tb:
+      syslog.syslog(line)
+    cgitb.handler(info)
+
+  def enable(self):
+    import sys
+    sys.excepthook = self
+
+MultiTracebackHook(enable=True)
 
 import os
Index: /branches/releng-9.0/nanobsd/files/usr/local/www/wlweb/index.cgi
===================================================================
--- /branches/releng-9.0/nanobsd/files/usr/local/www/wlweb/index.cgi	(revision 10799)
+++ /branches/releng-9.0/nanobsd/files/usr/local/www/wlweb/index.cgi	(revision 10804)
@@ -6,6 +6,35 @@
 # Rick van der Zwet <info@rickvanderzwet.nl>
 # Richard van Mansom <richardvm@wirelessleiden.nl>, stripped the webserver
-import cgitb
-cgitb.enable(logdir="/tmp")
+
+class MultiTracebackHook:
+  """A hook to replace sys.excepthook that shows tracebacks in syslog & HTML (using cgitb)"""
+  def __init__(self, ident=None, enable=False):
+    self.ident = ident
+    if enable:
+      self.enable()
+
+  def __call__(self, etype, evalue, etb):
+    self.handle((etype, evalue, etb))
+
+  def handle(self, info=None):
+    import cgitb
+    import os
+    import sys
+    import syslog
+    import traceback
+    info = info or sys.exc_info()
+    tb = traceback.format_exception(*info)
+    if self.ident:
+      syslog.openlog(self.ident)
+    prefix = '[%i]' % os.getpid() 
+    for line in tb:
+      syslog.syslog(line)
+    cgitb.handler(info)
+
+  def enable(self):
+    import sys
+    sys.excepthook = self
+
+MultiTracebackHook(enable=True)
 
 from subprocess import *
