do more logging
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index 9e1ba7a..4d9aae2 100755 (executable)
@@ -5,7 +5,7 @@ USE_DB = 0
 
 import ConfigParser
 import sys, os, string, re, pwd, signal
-import logging
+import logging, logging.handlers
 from traceback import format_tb
 if USE_DB: import pg
 from time import time, sleep
@@ -442,7 +442,8 @@ def create_pid_file(name):
                logging.warning('unable to write to pid file '+name+': '+str(e))
 
 def set_stuff_up():
-       def do_nothing(signum, stack): pass
+       def do_nothing(signum, stack):
+               signal.signal(signum, do_nothing)
        def stop_server(signum, stack): raise KeyboardInterrupt
        signal.signal(signal.SIGHUP, do_nothing)
        signal.signal(signal.SIGTERM, stop_server)
@@ -450,8 +451,8 @@ def set_stuff_up():
 
        options = parse_args()
        config_opts = VendConfigFile(options.config_file, config_options)
-       set_up_logging(options)
        if options.daemon: become_daemon()
+       set_up_logging(options)
        if options.pid_file != '': create_pid_file(options.pid_file)
 
        return options, config_opts
@@ -477,12 +478,16 @@ def set_up_logging(options):
                        logger.addHandler(file_logger)
                except IOError, e:
                        logger.warning('unable to write to log file '+options.log_file+': '+str(e))
+
+       if options.syslog:
+               sys_logger = logging.handlers.SysLogHandler('/dev/log', 'daemon')
+               sys_logger.setFormatter(logging.Formatter('vendserver[%d]'%(os.getpid()) + ' %(levelname)s: %(message)s'))
+               logger.addHandler(sys_logger)
        
        if options.verbose:
                logger.setLevel(logging.DEBUG)
        else:
                logger.setLevel(logging.INFO)
-       
 
 def become_daemon():
        dev_null = file('/dev/null')
@@ -500,16 +505,17 @@ def do_vend_server(options, config_opts):
                except (LATClientException, socket.error), e:
                        (exc_type, exc_value, exc_traceback) = sys.exc_info()
                        del exc_traceback
-                       print
-                       print "Connection error: "+str(exc_type)+" "+str(e)
-                       print "Trying again in 5 seconds."
+                       logging.error("Connection error: "+str(exc_type)+" "+str(e))
+                       logging.info("Trying again in 5 seconds.")
                        sleep(5)
                        continue
+               
                try:
                        run_forever(rfh, wfh, options, config_opts)
                except VendingException:
-                       print
-                       print "Connection died, trying again..."
+                       logging.error("Connection died, trying again...")
+                       logging.info("Trying again in 5 seconds.")
+                       sleep(5)
 
 if __name__ == '__main__':
        options, config_opts = set_stuff_up()

UCC git Repository :: git.ucc.asn.au