https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342019-11-13T09:49:47ZRedmine Entr’ouvertPasserelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2009032019-11-13T09:49:47ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Assigné à</strong> mis à <i>Nicolas Roche (absent jusqu'au 3 avril)</i></li></ul> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2010152019-11-13T17:40:22ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/38950">0001-logging-append-connector-response-to-ressource-log-3.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38950/0001-logging-append-connector-response-to-ressource-log-3.patch">0001-logging-append-connector-response-to-ressource-log-3.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Solution proposée</i></li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul>J'ai rencontré des difficultés sur l'enregistrement des réponses en base en rejouant les tests.<br />En l'état, quand ça ne passe pas je ne logue rien.
<ul>
<li>sur test_family.py<br /> je peux contourner avec un .decode('utf-8', errors='ignore').encode()<br /><pre>
UnicodeDecodeError: 'utf8' codec can't decode byte 0x93
</pre></li>
<li>sur test_opengis.py<br /> il s'agit d'une image ; même erreur plus une autre que je n'arrive pas à contourner.</li>
</ul>
<p>Aussi, j'ai fait apparaître dans le nom de la clé du dictionnaire le fait que la réponse provient du cache et non pas de l'application métier : encore un choix discutable.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2010182019-11-13T18:54:23ZBenjamin Dauvergne
<ul></ul><p>Nicolas Roche a écrit :</p>
<blockquote>
J'ai rencontré des difficultés sur l'enregistrement des réponses en base en rejouant les tests.<br />En l'état, quand ça ne passe pas je ne logue rien.
<ul>
<li>sur test_family.py<br />je peux contourner avec un .decode('utf-8', errors='ignore').encode()</li>
</ul>
</blockquote>
<p><code>force_text(..., errors='ignore')</code> lors du log.</p>
<blockquote>
[...]
<ul>
<li>sur test_opengis.py<br />il s'agit d'une image ; même erreur plus une autre que je n'arrive pas à contourner.</li>
</ul>
</blockquote>
<p>Même avec errors='ignore' ? Dans ce cas fallback sur un chaîne explicative de l'absence des données : '<binary>' ou alors encore une partie en base64 si on juge que ça peut être utile d'avoir un extrait d'un document (m'enfin ça va bien charger les logs).</p>
<blockquote>
<p>Aussi, j'ai fait apparaître dans le nom de la clé du dictionnaire le fait que la réponse provient du cache et non pas de l'application métier : encore un choix discutable.</p>
</blockquote>
<p>Mouais toujours dans 'response' plutôt que connector_response mais tu peux mettre à coté un 'from_cache': True.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2012952019-11-15T10:30:26ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/38989">0001-logging-append-connector-response-to-ressource-log-3.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38989/0001-logging-append-connector-response-to-ressource-log-3.patch">0001-logging-append-connector-response-to-ressource-log-3.patch</a> ajouté</li></ul><blockquote>
<p>ou alors encore une partie en base64 si on juge que ça peut être utile</p>
</blockquote>
<p>Je pensais qu'on pourrait toujours récupérer cette info via les logs simples (<code>def log_http_request</code>),<br />mais j'avoue que je n'arrive pas à le mettre en évidence.<br /><em>(du coup je veux bien une piste pour m'orienter dans ce ticket, svp)</em></p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2013082019-11-15T10:52:04ZBenjamin Dauvergne
<ul></ul><p>Nicolas Roche a écrit :</p>
<blockquote><blockquote>
<p>ou alors encore une partie en base64 si on juge que ça peut être utile</p>
</blockquote>
<p>Je pensais qu'on pourrait toujours récupérer cette info via les logs simples (<code>def log_http_request</code>),<br />mais j'avoue que je n'arrive pas à le mettre en évidence.</p>
</blockquote>
<p>Désolé je ne comprends pas ta réponse.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2013212019-11-15T11:18:21ZNicolas Roche (absent jusqu'au 3 avril)
<ul></ul><p>C'est que ce n'est pas clair pour moi non plus (d'ailleurs c'est l'occasion pour moi de voir si j'ai bien compris).<br /><em>passerelle/utils/</em>_init__.py_:<br /><pre>
def log_http_request(logger, ...): if response is not None:
...
if logger.level == 10: # DEBUG
...
content = response.content[:max_size]
extra['response_content'] = repr(content)
</pre><br />Je pense que ce code fait déjà ce que demande ce ticket, mais dans les logs "standards" (ie: /var/log/...).<br />Si vraiment on veux chercher du binaire dans les logs, on peut envisager de ne pas le faire via l'IHM (ie: l'objet de ce ticket)</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2013252019-11-15T11:29:18ZBenjamin Dauvergne
<ul></ul><p>Nicolas Roche a écrit :</p>
<blockquote>
<p>C'est que ce n'est pas clair pour moi non plus (d'ailleurs c'est l'occasion pour moi de voir si j'ai bien compris).<br /><em>passerelle/utils/</em>_init__.py_:<br />[...]<br />Je pense que ce code fait déjà ce que demande ce ticket, mais dans les logs "standards" (ie: /var/log/...).<br />Si vraiment on veux chercher du binaire dans les logs, on peut envisager de ne pas le faire via l'IHM (ie: l'objet de ce ticket)</p>
</blockquote>
<p>Ok, je pense qu'il faut coordonner tout le monde et décider si on veut les mêmes informations dans les logs structuré et dans les logs de resource (je pense d'ailleurs que tout le bordel dans ProxyLogger est inutile on aurait pu s'en sortir avec un handler et un LogWrapper qui met juste la resource dans 'extra', mais soit..).</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2028552019-11-25T12:42:39ZNicolas Roche (absent jusqu'au 3 avril)
<ul></ul><blockquote>
<p>coordonner tout le monde</p>
</blockquote>
<p>Vu ensemble ce lundi, '<binary>' ça passe.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2160422020-02-17T16:28:44ZValentin Deniaud
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>En cours</i></li></ul>Quelque chose bloque ce ticket ? Sinon c'est bon pour moi modulo :
<ul>
<li>import UnicodeDecodeError inutile</li>
<li>« troncate » dans un commentaire au lieu de « truncate »</li>
<li>dans le test, ajouter une petite ligne pas méchante genre <code>'6.172122' in log.extra['response']</code> pour vérifier qu'on logge bien quelque chose d'intelligible</li>
<li>je ne comprends pas le try/except, qu'est-ce qui lie un DataError du fait que les données soient binaires ? Si rien, l'enlever, si quelque chose, faire un test.</li>
<li>dans log_http_request qui logge déjà les réponses du logiciel métier, la clé dans extra s'appelle response_content, pourquoi pas suivre cela</li>
<li>je ne suis pas fan de définir une fonction locale vs une nouvelle méthode, parce que perform() est déjà beaucoup trop longue, mais peut-être que c'est que moi</li>
<li>en tant que non expert en encodage je ne trouve pas ça clair de passer value dans str puis dans force_text, je serai plus rassuré si on utilisait que force_text</li>
<li>et vérifier que les tests passent en python3.</li>
</ul> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2162672020-02-18T17:45:08ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/41570">0001-trivial-correct-a-typographical-error-31774.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/41570/0001-trivial-correct-a-typographical-error-31774.patch">0001-trivial-correct-a-typographical-error-31774.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/41571">0002-logging-append-connector-response-to-ressource-log-3.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/41571/0002-logging-append-connector-response-to-ressource-log-3.patch">0002-logging-append-connector-response-to-ressource-log-3.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>En cours</i> à <i>Solution proposée</i></li></ul><p>Remarques prises en compte dans le patch.</p>
<blockquote>
<p>dans le test, ajouter une petite ligne pas méchante genre '6.172122' in log.extra['response'] pour vérifier qu'on logge bien quelque chose d'intelligible</p>
</blockquote>
<p>ici je logue la réponse ('6.172122' fait parti des paramètres de la requête)<br /><pre>
assert eval(log.extra['response'])['data']['text'] == 'HAUSSONVILLE / BLANDAN / MON DESERT / SAURUPT'
</pre></p>
<blockquote>
<p>je ne comprends pas le try/except, qu'est-ce qui lie un DataError du fait que les données soient binaires ? Si rien, l'enlever, si quelque chose, faire un test.</p>
</blockquote>
<p>cf <a class="external" href="https://dev.entrouvert.org/issues/31774#note-2">https://dev.entrouvert.org/issues/31774#note-2</a><br />sur <em>test_family.py</em> et <em>test_opengis.py</em>, l'enregistrement d'une image plante en base de donnée.</p>
<blockquote>
<p>dans log_http_request qui logge déjà les réponses du logiciel métier, la clé dans extra s'appelle response_content, pourquoi pas suivre cela</p>
</blockquote>
<p>fait, j'ai aussi ajouté le statut et les en-têtes.</p>
<blockquote>
<p>en tant que non expert en encodage je ne trouve pas ça clair de passer value dans str puis dans force_text, je serai plus rassuré si on utilisait que force_text</p>
</blockquote>
<p>il s'agit de l'appel à <code>"__str__"</code> sur l'objet HttpResponse ou sur un dictionnaire si la requête est en cache.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2162712020-02-18T18:23:21ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>En fait, une fois qu'on a <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Development: lier les logs produits par une même requête (Fermé)" href="https://dev.entrouvert.org/issues/38157">#38157</a> (la possibilité d'afficher tous les logs liés à une requête), il n'y a plus vraiment d'intérêt à ce ticket, je pense.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2163532020-02-19T09:41:20ZValentin Deniaud
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>En cours</i></li></ul><p>Je trouve quand même ça sympa d'avoir des logs les plus complets possibles.<br />En plus j'aime bien la tête qu'a le patch maintenant, reste que si en raison du loglevel l'objet ResourceLog n'est pas créé, on va se retrouver à faire <code>resource_log.log_response</code> avec resource_log qui est à None et ça va planter.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2163542020-02-19T09:46:00ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><blockquote>
<p>Je trouve quand même ça sympa d'avoir des logs les plus complets possibles.</p>
</blockquote>
<p>Oui mais tout ne doit pas(plus) nécessairement être dans le même objet, si on a une ligne de log avec la réponse, avec le même transaction_id, on peut y aller, on a tout, sans duplication ici, sans ce truc quand même bizarre de revenir après coup sur une ligne de log.</p>
<p>Et à nouveau je partais de l'idée qu'on avait déjà ce log de la réponse, si ce n'est pas/plus le cas (peut-être parce qu'on retire le logging de to_json, peut-être pour autre chose), je suis bien sûr pour logguer la réponse.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2163632020-02-19T10:20:04ZValentin Deniaud
<ul></ul><p>Ce qu'on logge ici n'est jamais loggé nulle part, il s'agit du json que renvoie un endpoint, sinon ce qu'on logge déjà c'est la réponse du logiciel métier. Le logging dans to_json logge aussi à ce niveau là, mais que en cas d'erreur, donc jamais la réponse.</p>
<blockquote>
<p>sans ce truc quand même bizarre de revenir après coup sur une ligne de log</p>
</blockquote>
<p>C'est vrai qu'on aurait pu choisir d'en ajouter une, c'est fonction de ce qui paraît le plus clair dans l'interface.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=2163652020-02-19T10:22:44ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Je suis plutôt pour ajouter une ligne, pour ne pas avoir à modifier toutes les méthodes de log pour retourner l'objet, et pour offrir une chronologie lisible des moments de l'appel.</p> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=3231272021-08-27T13:32:00ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Statut</strong> changé de <i>En cours</i> à <i>Rejeté</i></li></ul><p>Vu la description : "modifier les méthodes de ProxyLogger pour retourner l'objet ResourceLog créé", en fait ce path n'est pas souhaitable.</p>
<p>Je rejette car le besoin énoncé dans le ticket lié "Logging des réponses (payload) des requêtes aux webservices (de WCS vers Passerelle)" <br />y trouve sa résolution :</p>
<blockquote>
<p>si c'est du JSON et que l'appel webservice dans w.c.s. contient un identifiant, il sera enregistré de ce côté là"</p>
</blockquote> Passerelle - Development #31774: ajouter au log d'un appel à un endpoint la réponse produitehttps://dev.entrouvert.org/issues/31774?journal_id=3231322021-08-27T13:42:37ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Surtout il y a eu <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Development: lier les logs produits par une même requête (Fermé)" href="https://dev.entrouvert.org/issues/38157">#38157</a> et un bouton qui permet de voir la liste des appels liés.</p>