Skip to content
Snippets Groups Projects
Commit ee439e0e authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

SW-699: added max_content_size

parent ed3c18ef
No related branches found
No related tags found
No related merge requests found
[program:messagelogger]
command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;exec messagelogger'
command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;exec messagelogger -m 768 -n'
user=lofarsys
stopsignal=INT ; KeyboardInterrupt
stopasgroup=true ; bash does not propagate signals
......
......@@ -37,11 +37,16 @@ from lofar.common.util import waitForInterrupt
class MessageLogger(BusListener):
class _Handler(AbstractMessageHandler):
def __init__(self, remove_content_newlines: bool):
self.remove_content_newlines = remove_content_newlines
def __init__(self, remove_content_newlines: bool, max_content_size: int = -1):
self._remove_content_newlines = remove_content_newlines
self._max_content_size = max_content_size
def handle_message(self, msg: LofarMessage):
content = str(msg.content).replace(linesep, " ") if self.remove_content_newlines else str(msg.content)
content = str(msg.content).replace(linesep, " ") if self._remove_content_newlines else str(msg.content)
if self._max_content_size > 0 and len(content) > self._max_content_size:
content = content[:self._max_content_size] + "..."
logger.info("%s subject='%s' %s%s%scontent: %s",
msg.__class__.__name__,
msg.subject,
......@@ -52,9 +57,10 @@ class MessageLogger(BusListener):
return True
def __init__(self, exchange:str=DEFAULT_BUSNAME, routing_key:str="#", broker:str=DEFAULT_BROKER,
remove_content_newlines: bool=False):
remove_content_newlines: bool=False, max_content_size: int=-1):
super(MessageLogger, self).__init__(handler_type=MessageLogger._Handler,
handler_kwargs={'remove_content_newlines': remove_content_newlines},
handler_kwargs={'remove_content_newlines': remove_content_newlines,
'max_content_size': max_content_size},
exchange=exchange,
routing_key=routing_key,
num_threads=1,
......@@ -65,27 +71,26 @@ def main():
# Check the invocation arguments
parser = OptionParser('%prog [options]', description='run the messegelogger, which logs each received message')
parser.add_option('-q', '--broker', dest='broker', type='string', default=DEFAULT_BROKER,
parser.add_option('-b', '--broker', dest='broker', type='string', default=DEFAULT_BROKER,
help='Address of the messaging broker, default: %default')
parser.add_option("-b", "--busname", dest="busname", type="string", default=DEFAULT_BUSNAME,
parser.add_option("-e", "--exchange", dest="exchange", type="string", default=DEFAULT_BUSNAME,
help="Name of the bus (exchange) to receive messages from. [default: %default]")
parser.add_option("-r", "--routing_key", dest="routing_key", type="string", default="#",
help="filter messages on by subject using this routing_key. #=all. [default: %default]")
parser.add_option("-n", "--no_newlines", dest="no_newlines", action='store_true',
help="remove newlines in message content, so we have single line log messages")
parser.add_option("-V", "--verbose", dest="verbose", action='store_true',
help="more verbose logging")
parser.add_option("-m", "--max_content_size", dest="max_content_size", type="int", default=-1,
help="delimit the logged content to at most <max_content_size> characters (or all if -1). [default: %default]")
options, args = parser.parse_args()
logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
level=logging.DEBUG if options.verbose else logging.INFO)
logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
logger.info("**************************")
logger.info("* starting messagelogger *")
logger.info("**************************")
with MessageLogger(exchange=options.busname, routing_key=options.routing_key,
broker=options.broker, remove_content_newlines=options.no_newlines):
with MessageLogger(exchange=options.exchange, routing_key=options.routing_key, broker=options.broker,
remove_content_newlines=options.no_newlines, max_content_size=options.max_content_size):
waitForInterrupt()
__all__ = ['MessageLogger', 'main']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment