diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/LogController.php b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/LogController.php index 81017909b..4be2008c6 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/LogController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/LogController.php @@ -81,7 +81,7 @@ class LogController extends ApiControllerBase $this->response->setRawHeader("Content-Type: text/csv"); $this->response->setRawHeader("Content-Disposition: attachment; filename=" . $scope . ".log"); foreach (json_decode($response, true)['rows'] as $row) { - printf("%s\t%s\n", $row['timestamp'], $row['line']); + printf("%s\t%s\t%s\n", $row['timestamp'], $row['process_name'], $row['line']); } return; } diff --git a/src/opnsense/mvc/app/views/OPNsense/Diagnostics/log.volt b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/log.volt index cc9de35ed..c08064da6 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Diagnostics/log.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/log.volt @@ -78,6 +78,7 @@ # {{ lang._('Date') }} + {{ lang._('Process') }} {{ lang._('Line') }} diff --git a/src/opnsense/scripts/systemhealth/logformats/__init__.py b/src/opnsense/scripts/systemhealth/logformats/__init__.py index bda4c17c6..00846e671 100755 --- a/src/opnsense/scripts/systemhealth/logformats/__init__.py +++ b/src/opnsense/scripts/systemhealth/logformats/__init__.py @@ -63,6 +63,12 @@ class BaseLogFormat: """ return line + @staticmethod + def process_name(line): + """ Return process name + """ + return "" + class FormatContainer: def __init__(self, filename): diff --git a/src/opnsense/scripts/systemhealth/logformats/syslog.py b/src/opnsense/scripts/systemhealth/logformats/syslog.py index 02243015b..1ee59a455 100755 --- a/src/opnsense/scripts/systemhealth/logformats/syslog.py +++ b/src/opnsense/scripts/systemhealth/logformats/syslog.py @@ -48,10 +48,16 @@ class SysLogFormat(BaseLogFormat): @staticmethod def line(line): - # strip timestamp from log line + # parse [date] [hostname] [process_name] [line] format response = line[16:] - # strip hostname from log line - return response[response.find(' ')+1:].strip() + tmp = response.find(':') + return response[tmp+1:].strip() if tmp > -1 else response[response.find(' ')+1:].strip() + + @staticmethod + def process_name(line): + response = line[16:] + tmp = response.find(':') + return response[:tmp].strip().split()[-1] if tmp > -1 else "" class SysLogFormatEpoch(BaseLogFormat): diff --git a/src/opnsense/scripts/systemhealth/queryLog.py b/src/opnsense/scripts/systemhealth/queryLog.py index 329305faa..75825216c 100755 --- a/src/opnsense/scripts/systemhealth/queryLog.py +++ b/src/opnsense/scripts/systemhealth/queryLog.py @@ -88,22 +88,28 @@ if __name__ == '__main__': filename = fetch_clog(log_filename) except Exception as e: filename = log_filename - for record in reverse_log_reader(filename): - if record['line'] != "" and filter_regexp.match(('%s' % record['line']).lower()): + for rec in reverse_log_reader(filename): + if rec['line'] != "" and filter_regexp.match(('%s' % rec['line']).lower()): result['total_rows'] += 1 if (len(result['rows']) < limit or limit == 0) and result['total_rows'] >= offset: - record['timestamp'] = None - record['parser'] = None - frmt = format_container.get_format(record['line']) + record = { + 'timestamp': None, + 'parser': None, + 'process_name': '' + } + frmt = format_container.get_format(rec['line']) if frmt: - record['timestamp'] = frmt.timestamp(record['line']) - record['line'] = frmt.line(record['line']) + record['timestamp'] = frmt.timestamp(rec['line']) + record['process_name'] = frmt.process_name(rec['line']) + record['line'] = frmt.line(rec['line']) record['parser'] = frmt.name + else: + record['line'] = rec['line'] result['rows'].append(record) - elif result['total_rows'] > offset + limit: + elif limit > 0 and result['total_rows'] > offset + limit: # do not fetch data until end of file... break - if result['total_rows'] > offset + limit: + if limit > 0 and result['total_rows'] > offset + limit: break # output results