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:
@@ -134,14 +134,6 @@ class Options(object):
|
||||
),
|
||||
help='log file to use (ignored with --nodaemon)'
|
||||
)
|
||||
self.parser.add_argument(
|
||||
'--syslog', dest='syslog', action='store_true',
|
||||
help='use syslog for logging output'
|
||||
)
|
||||
self.parser.add_argument(
|
||||
'--syslog-socket', dest='syslog_socket',
|
||||
help='socket to use for syslog connection if UDP not supported'
|
||||
)
|
||||
self.parser.add_argument(
|
||||
'--user', dest='user',
|
||||
help='user to use for daemon mode'
|
||||
@@ -175,20 +167,7 @@ def setup_logging(name, args):
|
||||
'%(asctime)-6s: %(name)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
|
||||
# No timestamp, used with syslog
|
||||
simple_formatter = logging.Formatter(
|
||||
'%(name)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
|
||||
if args.syslog and not args.nodaemon:
|
||||
if args.syslog_socket:
|
||||
address = args.syslog_socket
|
||||
else:
|
||||
address = ('localhost', 514)
|
||||
handler = logging.handlers.SysLogHandler(address=address,
|
||||
facility="daemon")
|
||||
handler.setFormatter(simple_formatter)
|
||||
elif logfile:
|
||||
if logfile:
|
||||
handler = logging.FileHandler(logfile)
|
||||
handler.setFormatter(ts_formatter)
|
||||
else:
|
||||
|
||||
@@ -24,15 +24,11 @@ from libra.common.options import Options, setup_logging
|
||||
|
||||
|
||||
class Server(object):
|
||||
def __init__(self, nodes):
|
||||
def __init__(self, logger, nodes):
|
||||
self.logger = logger
|
||||
self.nodes = nodes
|
||||
|
||||
def main(self, logger=None, args=None):
|
||||
if logger:
|
||||
self.logger = logger
|
||||
else:
|
||||
self.logger = setup_logging('libra_mgm', args)
|
||||
|
||||
def main(self):
|
||||
self.logger.info(
|
||||
'Libra Pool Manager started with a float of {nodes} nodes'
|
||||
.format(nodes=self.nodes)
|
||||
@@ -64,15 +60,16 @@ def main():
|
||||
args = options.run()
|
||||
|
||||
logger = setup_logging('libra_mgm', args)
|
||||
server = Server(args.nodes)
|
||||
server = Server(logger, args.nodes)
|
||||
|
||||
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:
|
||||
@@ -87,6 +84,6 @@ def main():
|
||||
logger.critical("Invalid group: %s" % args.group)
|
||||
return 1
|
||||
with context:
|
||||
server.main(args=args)
|
||||
server.main()
|
||||
|
||||
return 0
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user