From 99a2a2ec47fa18e49405e25221ae2a0b674f11a4 Mon Sep 17 00:00:00 2001 From: Daniel Lysfjord Date: Tue, 16 Apr 2024 00:26:05 +0200 Subject: [PATCH] Make you pass in logfile to follow, try to show when we send data from the overflowqueue. Fix a wording-wrong. --- routerstats_collector.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/routerstats_collector.py b/routerstats_collector.py index eb38fa1..cab9bb7 100755 --- a/routerstats_collector.py +++ b/routerstats_collector.py @@ -63,7 +63,7 @@ def filefetcher(filename: str, collector_queue, signal_queue, sleep_sec=0.5, see if line.isspace(): logging.debug('Empty line is empty, thank you for the newline') else: - logging.debug('Sending line ending at pos ' + str(input_file.tell())) + logging.debug('Parsing line ending at pos ' + str(input_file.tell())) parse_and_queue_line(line, collector_queue) line = '' start_stat = os.stat(filename) @@ -226,9 +226,11 @@ class RequestHandler(socketserver.BaseRequestHandler): while True: try: if self.overflowqueue.empty != True: - tosend = self.overflowqueue.get_nowait() - if tosend: - self.send(tosend) + while True: + tosend = self.overflowqueue.get_nowait() + if tosend: + logging.debug('Sending ' + str(tosend) + ' from overflowqueue') + self.send(tosend) except queue.Empty: pass try: @@ -237,8 +239,8 @@ class RequestHandler(socketserver.BaseRequestHandler): tosend = str(event[0]) + ' ' + event[1] try: self.send(tosend) - except BrokenPipeError: - logging.error('Client gone') + except (BrokenPipeError, ConnectionResetError) as error: + logging.error('Client gone: ' + str(error)) self.overflowqueue.put(tosend) break try: @@ -247,6 +249,7 @@ class RequestHandler(socketserver.BaseRequestHandler): logging.error('Client gone') self.overflowqueue.put(tosend) break + start_time = datetime.now() except queue.Empty: pass @@ -362,7 +365,11 @@ def main(): '''Main thingy''' setproctitle('routerstats-collector main-thread') logging.debug('Starting as PID ' + str(os.getpid())) - file_to_follow = 'syslogemu.log' + try: + file_to_follow = sys.argv[1] + except IndexError: + logging.error('Need a log file to tail') + sys.exit() #Just quit early if file is missing.. if os.path.isfile(file_to_follow) is False: logging.error('Could not find file ' + file_to_follow)