1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Enable system logging for reports

This commit is contained in:
Jeremy Stretch
2020-03-04 14:22:30 -05:00
parent 36cbbac870
commit 9df2769383
2 changed files with 16 additions and 0 deletions

View File

@ -6,5 +6,6 @@
|---------------------------------|--------------------------------------------------------| |---------------------------------|--------------------------------------------------------|
| `netbox.auth.*` | Authentication events | | `netbox.auth.*` | Authentication events |
| `netbox.api.views.*` | Views which handle business logic for the REST API | | `netbox.api.views.*` | Views which handle business logic for the REST API |
| `netbox.reports.*` | Reports (`module.name`) |
| `netbox.scripts.*` | Custom scripts (`module.name`) | | `netbox.scripts.*` | Custom scripts (`module.name`) |
| `netbox.views.*` | Views which handle business logic for the web UI | | `netbox.views.*` | Views which handle business logic for the web UI |

View File

@ -1,5 +1,6 @@
import importlib import importlib
import inspect import inspect
import logging
import pkgutil import pkgutil
from collections import OrderedDict from collections import OrderedDict
@ -91,6 +92,8 @@ class Report(object):
self.active_test = None self.active_test = None
self.failed = False self.failed = False
self.logger = logging.getLogger(f"netbox.reports.{self.module}.{self.name}")
# Compile test methods and initialize results skeleton # Compile test methods and initialize results skeleton
test_methods = [] test_methods = []
for method in dir(self): for method in dir(self):
@ -138,6 +141,7 @@ class Report(object):
Log a message which is not associated with a particular object. Log a message which is not associated with a particular object.
""" """
self._log(None, message, level=LOG_DEFAULT) self._log(None, message, level=LOG_DEFAULT)
self.logger.info(message)
def log_success(self, obj, message=None): def log_success(self, obj, message=None):
""" """
@ -146,6 +150,7 @@ class Report(object):
if message: if message:
self._log(obj, message, level=LOG_SUCCESS) self._log(obj, message, level=LOG_SUCCESS)
self._results[self.active_test]['success'] += 1 self._results[self.active_test]['success'] += 1
self.logger.info(f"Success | {obj}: {message}")
def log_info(self, obj, message): def log_info(self, obj, message):
""" """
@ -153,6 +158,7 @@ class Report(object):
""" """
self._log(obj, message, level=LOG_INFO) self._log(obj, message, level=LOG_INFO)
self._results[self.active_test]['info'] += 1 self._results[self.active_test]['info'] += 1
self.logger.info(f"Info | {obj}: {message}")
def log_warning(self, obj, message): def log_warning(self, obj, message):
""" """
@ -160,6 +166,7 @@ class Report(object):
""" """
self._log(obj, message, level=LOG_WARNING) self._log(obj, message, level=LOG_WARNING)
self._results[self.active_test]['warning'] += 1 self._results[self.active_test]['warning'] += 1
self.logger.info(f"Warning | {obj}: {message}")
def log_failure(self, obj, message): def log_failure(self, obj, message):
""" """
@ -167,12 +174,15 @@ class Report(object):
""" """
self._log(obj, message, level=LOG_FAILURE) self._log(obj, message, level=LOG_FAILURE)
self._results[self.active_test]['failure'] += 1 self._results[self.active_test]['failure'] += 1
self.logger.info(f"Failure | {obj}: {message}")
self.failed = True self.failed = True
def run(self): def run(self):
""" """
Run the report and return its results. Each test method will be executed in order. Run the report and return its results. Each test method will be executed in order.
""" """
self.logger.info(f"Running report")
for method_name in self.test_methods: for method_name in self.test_methods:
self.active_test = method_name self.active_test = method_name
test_method = getattr(self, method_name) test_method = getattr(self, method_name)
@ -184,6 +194,11 @@ class Report(object):
result.save() result.save()
self.result = result self.result = result
if self.failed:
self.logger.warning("Report failed")
else:
self.logger.info("Report completed successfully")
# Perform any post-run tasks # Perform any post-run tasks
self.post_run() self.post_run()