From e5fedc4a504b44461e2d2fef17938faf4e602037 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 16 Nov 2023 10:01:52 +0100 Subject: [PATCH] Make it possible to skip logging before the actual call --- python/nav/util.py | 17 +++++++++++++++++ python/nav/web/auth/remote_user.py | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/python/nav/util.py b/python/nav/util.py index edb8d9c93f..b75162c47b 100644 --- a/python/nav/util.py +++ b/python/nav/util.py @@ -535,3 +535,20 @@ def resource_bytes(package, filename): """ ref = resource_files(package) / filename return ref.read_bytes() + + +def check_log_level(logger, loglevel): + """ + Check that the level of the logger is equal to or below loglevel + + Use before possibly expensive logging operations, like calling logging in + a loop or building an expensive object that will be logged and thrown away. + + Avoid this classic mistake: + + logger.info("%s", expensive_function()) + """ + level = logger.getEffectiveLevel() + if level <= loglevel: + return True + return False diff --git a/python/nav/web/auth/remote_user.py b/python/nav/web/auth/remote_user.py index 896c1d14bc..b3734be6cc 100644 --- a/python/nav/web/auth/remote_user.py +++ b/python/nav/web/auth/remote_user.py @@ -20,10 +20,13 @@ from os.path import join import secrets +from django.conf import settings + from nav.auditlog.models import LogEntry from nav.config import NAVConfigParser from nav.models.profiles import Account from nav.web.auth.utils import set_account +from nav.util import check_log_level __all__ = [] @@ -178,6 +181,10 @@ def get_username(request): if not request: return None + if settings.DEBUG or check_log_level(_logger, logging.DEBUG): + for metakey, value in request.META.items(): + if metakey[0] == metakey[0].upper(): + _logger.debug('%s: %s', metakey, value) workaround = 'none' try: workaround_config = _config.get('remote-user', 'workaround')