Project

General

Profile

Development #55687

emails sur les erreurs, le paramétrage d'adresses alternatives ne semble plus ok

Added by Frédéric Péters 11 days ago. Updated 3 days ago.

Status:
Solution proposée
Priority:
Normal
Target version:
-
Start date:
19 Jul 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

Fatigué par certaines traces qui de toute façon ne donnent pas d'infos (#55516) j'ai voulu reparamétrer un connecteur pour qu'elles soient plutôt envoyée dans un /dev/null et ça ne semble pas fonctionner, on continue à recevoir les emails.

Sans doute aussi quelque chose cassé par le passage à django 2.2, vraisemblablement le override_settings qui de base était prévu pour les tests ne marche plus ici.

        logging_parameters = self.connector.logging_parameters
        if logging_parameters.trace_emails:
            admins = [('', x) for x in logging_parameters.trace_emails.splitlines()]
        with override_settings(ADMINS=admins):
            getattr(self._logger, levelname.lower())(message, *args, **kwargs)

Files


Related issues

Related to Hobo - Development #55824: Permettre un AdminEmailHandler customSolution proposée26 Jul 2021

Actions

History

#1

Updated by Paul Marillonnet 11 days ago

  • Description updated (diff)
#2

Updated by Valentin Deniaud 11 days ago

  • Assignee set to Valentin Deniaud
#3

Updated by Valentin Deniaud 11 days ago

C'est un cas qui est testé, test_trace_emails, et je ne reproduis pas en local. Quelle est l'URL du connecteur où ça n'a pas marché ?

#4

Updated by Frédéric Péters 11 days ago

Tout ce qui est listé dans #55588#note-3 j'ai mis dans "Adresses où recevoir les erreurs et traces critiques" et ça continue à faire des mails toutes les 5 minutes adressés à admin+....

#5

Updated by Frédéric Péters 11 days ago

Aussi, https://passerelle.toodego.com/grandlyon-iodas/iodas/, qui a depuis des lustres et qui s'est mis à les envoyer à admin@ au passage en django 2.2. (à peu près 4000 mails inutiles reçus pour ce cas).

#6

Updated by Valentin Deniaud 11 days ago

OK, je ne peux pas pousser plus loin l'investigation, les git diff dans les sources de Django ne donnent pas grand chose.

Du coup, jeter cette solution qui sentait de toute façon le bricolage, et :
  • Passer send_emails_to=xxx dans extra au moment de logger
  • Aller modifier hobo.multitenant.log.AdminEmailHandler et lui faire utiliser ce paramètre

C'est l'approche qui me paraît recommandée dans la doc (https://docs.djangoproject.com/en/3.2/topics/logging/#django.utils.log.AdminEmailHandler.send_mail).

#7

Updated by Frédéric Péters 11 days ago

Moi ça me va. (en soit ça fait un paramétrage de Passerelle qui dépend d'Hobo, mais acceptons ça).

#8

Updated by Valentin Deniaud 10 days ago

  • Patch proposed changed from No to Yes
  • Status changed from Nouveau to Solution proposée
  • Tracker changed from Bug to Development
  • File 0001-misc-fix-override-of-trace-emails-recipients-for-Dja.patch added

Voilà, j'ai fait en sorte qu'il n'y ait pas de dépendance à hobo (c'était obligatoire pour pouvoir tester de toute manière), ensuite il faudra dupliquer le code du handler dans hobo pour que ça marche sur nos installations.

#9

Updated by Valentin Deniaud 10 days ago

  • File deleted (0001-misc-fix-override-of-trace-emails-recipients-for-Dja.patch)
#11

Updated by Frédéric Péters 9 days ago

En fait pour le cas #55588#note-3 ça n'ira pas c'est un logger.error() direct de cmislib. (je serais là à modifier la config pour virer ces infos, peut-être via clamp_to_warning comme on fait pour d'autres).

Ou alors on pose comme objectif que tous les appels à logging fait par des modules appelés par un connecteur doivent suivre le paramétrage du connecteur (ce qui s'entend mais me semble compliqué).

Pour le cas #55687#note-5 je n'ai par contre pas d'explication.

Voilà si on en reste au logging de passerelle, c'est plus clean de faire comme tu proposes que de garder l'override_settings. (il y aurait à en retirer l'import).

#12

Updated by Valentin Deniaud 9 days ago

Frédéric Péters a écrit :

Ou alors on pose comme objectif que tous les appels à logging fait par des modules appelés par un connecteur doivent suivre le paramétrage du connecteur (ce qui s'entend mais me semble compliqué).

Nouvelle version qui va dans ce sens, ça devrait marcher pour le connecteur CMIS en tout cas.

Et dans hobo, plutôt un getattr(settings, 'ADMIN_EMAIL_HANDLER_CLASS') et hériter de ça plutôt que dupliquer le code.

#13

Updated by Valentin Deniaud 5 days ago

#14

Updated by Valentin Deniaud 4 days ago

Rebasé, ajout du paramétrage attendu par hobo et correction d'un elif mal fichu.

#15

Updated by Benjamin Dauvergne 4 days ago

  • Status changed from Solution proposée to En cours

Je vois un addFilter mais pas de removeFilter, c'est nettoyé quand tout ça ? Pour ce genre de modifications un peu globale ce serait mieux avec un contextmanager, genre ProxyLogger.monkeypatch_root_logger(), on doit pouvoir placer un with monkey...(): à quelques point stratégiques genre GenericEndpointView.dispatch(), Job.run() et dans la commande de cron autour de getattr(connector,·frequency)().

#16

Updated by Valentin Deniaud 3 days ago

Benjamin Dauvergne a écrit :

Je vois un addFilter mais pas de removeFilter, c'est nettoyé quand tout ça ?

En effet, gros oubli... Revoici avec un contextmanager.

Also available in: Atom PDF