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
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)
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
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')
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()