Projet

Général

Profil

Development #56711

ne pas logguer les PermissionDenied

Ajouté par Frédéric Péters il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
06 septembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Dans la sortie de journalctl, on a la ligne de log HTTP avec 403 et ça suffit, pas besoin de :

sep 06 18:53:17 combo uwsgi[16476]: combo WARNING agents.mesdemarches.saint-lo-agglo.fr 176.148.43.122 27f8919560dc468886fd9889067092 r:7FE451153898 Forbidden (Permission denied): /manage/menu.json
                                    Traceback (most recent call last):
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 34, in inner
                                        response = get_response(request)
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 115, in _get_response
                                        response = self.process_exception_by_middleware(e, request)
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 113, in _get_response
                                        response = wrapped_callback(request, *callback_args, **callback_kwargs)
                                      File "/usr/lib/python3/dist-packages/django/contrib/auth/decorators.py", line 20, in _wrapped_view
                                        if test_func(request.user):
                                      File "/usr/lib/python3/dist-packages/combo/urls_utils.py", line 64, in check_manager
                                        raise PermissionDenied()
                                    django.core.exceptions.PermissionDenied

Fichiers


Demandes liées

Lié à Publik - Development #57007: uwsgi doit faire apparaître le nom de tenant dans les entrées de logNouveau16 septembre 2021

Actions

Révisions associées

Révision ded8905e (diff)
Ajouté par Paul Marillonnet il y a plus de 2 ans

logging: filter out http 403 messages in request context filter (#56711)

Historique

#1

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Assigné à mis à Paul Marillonnet
#2

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Je doute que pour un formateur et un statut http en particulier, on ait une solution plus élégante que de tronquer le message pré-formaté dans ce cas particulier à l’exécution du formateur, et ceci avant de générer le record.message qui va se retrouver dans journalctl.

Pour info ça donnerait quelque chose comme ceci. Je vais regarder si je trouve plus une solution plus élégante, sinon j’écrirai les tests.

#3

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Après discussion avec Thomas, on comprend que cette troncation doit avoir lieu dans un filtre plutôt que dans un formateur, c’est plus conforme au module logging. Voir par exemple https://docs.python.org/3/library/logging.html#filter-objects :

If deemed appropriate, the record may be modified in-place by this [logging.Filter.filter] method.

En revanche, pour revenir à la discussion avec Thomas, ce ne sera pas dans le RequestContextFilter de hobo, dont le rôle est d’ajouter des informations de contexte à la requête. Je pense qu’il vaut mieux faire un nouveau filtre.

#4

Mis à jour par Frédéric Péters il y a plus de 2 ans

Juste pour préciser ce ticket : il s'agissait de ne pas logguer, pas "raccourcir".

Ça aurait sans doute été plus clair si j'avais précisé le "on a la ligne de log HTTP avec 403", en fait aujourd'hui on a :

sep 15 14:56:01 combo uwsgi[29998]: combo WARNING agents.....fr 31.32.213.189 ff9a210c74724f13a22ed120801464 r:7F0B8C9AC1D0 Forbidden (Permission denied): /manage/menu.json
                                    Traceback (most recent call last):
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 34, in inner
                                        response = get_response(request)
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 115, in _get_response
                                        response = self.process_exception_by_middleware(e, request)
                                      File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 113, in _get_response
                                        response = wrapped_callback(request, *callback_args, **callback_kwargs)
                                      File "/usr/lib/python3/dist-packages/django/contrib/auth/decorators.py", line 20, in _wrapped_view
                                        if test_func(request.user):
                                      File "/usr/lib/python3/dist-packages/combo/urls_utils.py", line 64, in check_manager
                                        raise PermissionDenied()
                                    django.core.exceptions.PermissionDenied
sep 15 14:56:01 combo uwsgi[18365]: [pid: 29998|app: 0|req: 197322/2179241] 0.0.0.0 () {52 vars in 1324 bytes} [Wed Sep 15 14:56:01 2021] GET /manage/menu.json?callback=jQuery1102029690759224075935_1631710560556&_=1631710560557 => generated 22 bytes in 40 msecs (HTTP/1.0 403) ...

et la dernière ligne, d'uwsgi, elle suffit totalement, zéro utilité à l'erreur du haut.

#5

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Frédéric Péters (absent jusqu’au 20/9) a écrit :

Juste pour préciser ce ticket : il s'agissait de ne pas logguer, pas "raccourcir".

Ça aurait sans doute été plus clair si j'avais précisé le "on a la ligne de log HTTP avec 403", en fait aujourd'hui on a :

[...]

et la dernière ligne, d'uwsgi, elle suffit totalement, zéro utilité à l'erreur du haut.

Ok très bien, faisons comme ça (je pensais que garder la première ligne tronquée pouvait avoir une quelconque utilité – par exemple sur la seconde ligne que tu montres ici, le tenant n’apparaît pas directement).

#6

Mis à jour par Frédéric Péters il y a plus de 2 ans

(sûr ok pour un ticket pour avoir le tenant sur les logs uwsgi)

#7

Mis à jour par Paul Marillonnet il y a plus de 2 ans

#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#9

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit ded8905ebcffe7697635858a4f24748b30639f09
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Sep 15 15:31:29 2021 +0200

    logging: filter out http 403 messages in request context filter (#56711)
#10

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Frédéric Péters (absent jusqu’au 20/9) a écrit :

(sûr ok pour un ticket pour avoir le tenant sur les logs uwsgi)

#57007

#11

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Lié à Development #57007: uwsgi doit faire apparaître le nom de tenant dans les entrées de log ajouté
#12

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF