summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2008-01-30 11:55:33 -0500
committerRob Crittenden <rcritten@redhat.com>2008-01-30 11:55:33 -0500
commit473eb9992e249428bee278643f7075b4dd38fd26 (patch)
tree7a91ebfc4bd9923bf2d2b512be83f48378ffc3d2
parentd73dd8b427449be8fe40f394542591aeea15cc8e (diff)
downloadfreeipa-473eb9992e249428bee278643f7075b4dd38fd26.tar.gz
freeipa-473eb9992e249428bee278643f7075b4dd38fd26.tar.xz
freeipa-473eb9992e249428bee278643f7075b4dd38fd26.zip
Enable logging so we can catch startup errors either in the console or
the error log. Add a foreground and debug flag Resolves 430011
-rw-r--r--ipa-server/ipa-gui/ipa_webgui54
1 files changed, 51 insertions, 3 deletions
diff --git a/ipa-server/ipa-gui/ipa_webgui b/ipa-server/ipa-gui/ipa_webgui
index 3fb41901..f7780af8 100644
--- a/ipa-server/ipa-gui/ipa_webgui
+++ b/ipa-server/ipa-gui/ipa_webgui
@@ -18,6 +18,30 @@
#
import os, sys
+from optparse import OptionParser
+import ipa.config
+import traceback
+import logging
+
+def usage():
+ print "ipa_webgui [-f|--foreground] [-d|--debug]"
+ sys.exit(1)
+
+def parse_options():
+ parser = OptionParser()
+ parser.add_option("-f", "--foreground", dest="foreground",
+ action="store_true", default=False,
+ help="Remain in the foreground")
+ parser.add_option("-d", "--debug", dest="debug", action="store_true",
+ default=False,
+ help="Increase the amount of logging information")
+ parser.add_option("--usage", action="store_true",
+ help="Program usage")
+
+ args = ipa.config.init_config(sys.argv)
+ options, args = parser.parse_args(args)
+
+ return options, args
def daemonize():
# fork once so the parent can exit
@@ -64,14 +88,31 @@ def daemonize():
os.open("/dev/null", os.O_RDWR)
def main():
+ options, args = parse_options()
+
+ foreground = options.foreground
+
+ if options.debug:
+ loglevel = logging.DEBUG
+ else:
+ loglevel = logging.WARN
+
# To make development easier, we detect if we are in the development
# environment to load a different configuration and avoid becoming
# a daemon
devel = False
if os.path.exists(os.path.join(os.path.dirname(__file__), "Makefile.am")):
devel = True
+ foreground = True
+ logging.basicConfig(level=loglevel,
+ stream=sys.stderr)
+ else:
+ # This log file name needs to be kept in sync with the one in
+ # ipa_webgui.cfg
+ logging.basicConfig(level=loglevel,
+ filename='/var/log/ipa_error.log')
- if not devel:
+ if not foreground:
try:
daemonize()
except Exception, e:
@@ -85,7 +126,6 @@ def main():
pkg_resources.require("TurboGears")
pkg_resources.require("ipa_gui")
-
from turbogears import update_config, start_server
import cherrypy
cherrypy.lowercase_api = True
@@ -105,6 +145,14 @@ def main():
try:
main()
+ sys.exit(0)
+except SystemExit, e:
+ sys.exit(e)
except Exception, e:
- print "failed to start web gui: %s" % str(e)
+ message = "failed to start web gui: %s" % str(e)
+ print message
+ for str in traceback.format_tb(sys.exc_info()[2]):
+ message = message + "\n" + str
+ logging.error(message)
+
sys.exit(1)