Remove broken syslog logging.

Logging to syslog was erratic. Child would either double
log entries, or nothing at all. By preserving the file
handles used by the logger, we can pass it safely along
to the child process. Parent will exit, so this should
be safe.
This commit is contained in:
David Shrewsbury
2012-10-02 13:19:43 -04:00
parent 327bfc653f
commit de9bc8f201
3 changed files with 18 additions and 57 deletions

View File

@@ -108,32 +108,16 @@ class Server(object):
non-daemon mode.
"""
def __init__(self, servers, reconnect_sleep):
def __init__(self, logger, servers, reconnect_sleep):
self.logger = logger
self.driver = None
self.servers = servers
self.reconnect_sleep = reconnect_sleep
def main(self, logger=None, args=None):
"""
Main method of the server.
`logger`
If given, will be used as the logging class. Otherwise, a new
logger will be retrieved.
`args`
Only needed when `logger` is None.
"""
def main(self):
""" Main method of the server. """
my_ip = socket.gethostbyname(socket.gethostname())
task_name = "lbaas-%s" % my_ip
if logger:
self.logger = logger
else:
# We need to setup logging here because if we are running
# as a daemon, then any open file handles will have been closed.
self.logger = setup_logging('libra_worker', args)
self.logger.debug("Registering task %s" % task_name)
worker = CustomJSONGearmanWorker(self.servers)
@@ -202,16 +186,17 @@ def main():
driver = driver_class()
logger.debug("Job server list: %s" % args.server)
server = Server(args.server, args.reconnect_sleep)
server = Server(logger, args.server, args.reconnect_sleep)
server.driver = driver
if args.nodaemon:
server.main(logger=logger)
server.main()
else:
context = daemon.DaemonContext(
working_directory='/etc/haproxy',
umask=0o022,
pidfile=lockfile.FileLock(args.pid)
pidfile=lockfile.FileLock(args.pid),
files_preserve=[logger.handlers[0].stream]
)
if args.user:
try:
@@ -227,6 +212,6 @@ def main():
return 1
with context:
server.main(args=args)
server.main()
return 0