Les journaux sont nécessaires pour résoudre les échecs de documents, mais il n'est pas nécessaire de consigner le texte intégral.

Des journaux sont nécessaires pour localiser les échecs de traduction, mais il n'est pas nécessaire d'imprimer l'intégralité du contrat, du numéro d'identification ou du jeton de téléchargement. Le journal doit répondre « quelle tâche, à quelle étape et pourquoi elle a échoué » plutôt que de devenir une deuxième bibliothèque de documents dépourvue de gestion des autorisations.

Les journaux sont nécessaires pour résoudre les échecs de traduction de documents, mais il n'est pas nécessaire qu'ils contiennent le texte intégral du contrat, le numéro d'identification ou le jeton de téléchargement. Cet article explique comment faire en sorte que le journal réponde « quelle tâche a échoué à quelle étape et pourquoi » sans copier les documents client dans le journal.

Les lecteurs appropriés sont les développeurs et le personnel d'exploitation et de maintenance qui sont responsables des services de traduction de documents, de l'amarrage des interfaces de traduction ou de la maintenance des journaux d'arrière-plan. Après lecture, vous pouvez concevoir un ensemble de champs de liste blanche, vérifier que le journal ne fait pas ressortir le texte original et définir la période de conservation et la portée d'accès pour le dépannage.

Les exemples utilisent des échantillons synthétiques pour démontrer les méthodes de traitement, et le code a été vérifié dans un environnement isolé, mais cela ne représente pas une garantie de tous les fichiers réels ou des performances du produit. Avant de traiter des documents importants, veuillez conserver les originaux et les examiner en fonction des limites et des éléments d'acceptation ci-dessous.

Que doit-on enregistrer dans le journal de dépannage ? Conclusion en une phrase

Le journal enregistre uniquement les champs autorisés tels que l'ID de tâche, l'étape, la catégorie d'erreur et la consommation de temps, mais n'enregistre pas le contenu du document ni les informations d'identification.

votre situationPratiques recommandéesraison
Besoin de savoir quelle tâche a échouéEnregistrer un ID de tâche interne aléatoirePossibilité de localiser les problèmes sans exposer les noms ou chemins de fichiers utilisateur
Besoin de déterminer à quelle étape se trouve la carteEnregistrez le nom de la scène et le temps prisPas besoin de chaque texte source et traduction
La demande a été rejetée par l'amontEnregistrer les catégories d'erreurs normaliséesLe contenu complet de la demande d'authentification de première classe ne doit pas être saisi dans le journal
Il faut revenir à l'original pour le dépannageUtiliser des références dans un système contrôléLes liens qui peuvent être téléchargés publiquement en permanence risquent d'être divulgués

Commencez par les champs autorisés à enregistrer

La liste noire peut facilement manquer de nouveaux champs sensibles. Une approche plus prudente consiste à afficher uniquement les champs conçus, par exemple :

  • ID de tâche interne
  • Étape de traitement
  • catégorie d'erreur
  • prend du temps

L'exemple de synthèse ci-dessous utilise une projection de liste blanche afin que le texte intégral et les jetons de l'entrée ne soient pas saisis dans le journal.

Le journal de vérification n'a pas fait ressortir le texte original.

import io
import json
import logging

ALLOWED = ("job_id", "stage", "error_code", "elapsed_ms")
def log_record(data):
    return {key: data[key] for key in ALLOWED if key in data}

stream = io.StringIO()
logger = logging.getLogger("synthetic-document-job")
logger.handlers.clear()
logger.propagate = False
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(stream)
logger.addHandler(handler)
event = {"job_id": "demo-12", "stage": "parse", "error_code": "BAD_CONTAINER",
         "elapsed_ms": 42, "document_text": "synthetic confidential clause",
         "access_token": "synthetic-secret"}
logger.info(json.dumps(log_record(event), sort_keys=True))
logged = json.loads(stream.getvalue())
assert logged["error_code"] == "BAD_CONTAINER"
assert "document_text" not in logged
assert "synthetic-secret" not in stream.getvalue()
assert set(logged) <= set(ALLOWED)
logger.removeHandler(handler)

L'exemple modifie uniquement l'enregistreur de démonstration auto-nommé. Il n'est pas recommandé de supprimer le gestionnaire global de l'application dans la bibliothèque métier. Les valeurs des champs doivent encore être vérifiées pour la longueur et le type. Si vous insérez le texte intégral de l'utilisateur dans error_code, le nom de la liste blanche à lui seul ne vous sauvera pas.

Identifiez les identifiants associés au lieu de contenu sensible

Le tableau ci-dessous liste les besoins courants lors de l’inspection, ainsi que le contenu des dossiers de recommandations et de non-recommandations.

Questions que je veux examinerDisques recommandésIl n’est pas recommandé d’enregistrer cela
Quelle mission a échouéID de tâche interne aléatoireLe nom de fichier complet et le chemin de l’utilisateur
Quelle étape prend du tempsÉtapes et chronophagesChaque paragraphe du texte source et de la traduction
Pourquoi Upstream refuse-t-il ?Normalisation des catégories d’erreurUne requête complète avec un en-tête d’authentification
Comment retrouver l’originalRéférences au sein du système contrôléUn lien disponible en permanence pour téléchargement public

La période de rétention est aussi importante que la portée de l’accès

Même si le journal ne contient pas de texte de corps, la combinaison du temps de la tâche, de la langue et de la taille du fichier peut révéler des informations commerciales. Les journaux doivent être accompagnés de contrôles d’accès, de périodes de conservation et de processus de suppression.

Lors du dépannage, augmentez temporairement le niveau du journal, précisez quand reprendre les opérations, et évitez de rester trop longtemps en mode débogage dans l’environnement de production.

L’intégration de traduction fournit également des journaux clairs et restreints

Lors de l’intégration avec OmniDoc (entrée produit), seule l’association entre les tâches locales et distantes est enregistrée ; les fichiers téléchargés par les utilisateurs ne doivent pas être copiés dans les journaux pour faciliter le dépannage.

Un bon rapport de problème peut expliquer le stade de défaillance et les conditions de récurrence, tout en garantissant que les documents clients ne circulent que dans les chemins de traitement autorisés.

Références : Python logging.

📊 Comparaison des noyaux

MéthodeAvantagesRisque
Liste noireLa méthode d’écriture est simple et facile à apprendreLes champs sensibles qui apparaissent facilement sont manqués
Liste blancheSeuls les champs conçus sont produits, avec des frontières clairesIl est nécessaire de planifier les champs à l’avance et de vérifier la longueur et le type des valeurs des champs

🎯 Quelle méthode te convient ?

Si vous devez trouver une tâche de traduction

Enregistre les identifiants internes de tâches aléatoires et les étapes de défaillance, sans enregistrer le nom ou le chemin complet du fichier de l’utilisateur.

Si vous voulez gérer les erreurs d’interface en amont

Enregistrer les catégories d’erreur standardisées, mais ne pas enregistrer les requêtes complètes avec des en-têtes d’authentification.

Si vous dépannez les problèmes en ligne

Augmentez temporairement les niveaux de journal et restaurez immédiatement après inspection.

Si tu veux concevoir des champs de logarithmes

Priorisez la mise en liste blanche et vérifiez la longueur et le type de valeurs des champs.

❓ Foire aux questions (FAQ)

1. Le journal peut-il enregistrer le nom complet du fichier de l’utilisateur ?

Pas recommandé. Le nom complet du fichier et le chemin ne sont pas recommandés pour l’enregistrement ; vous pouvez utiliser des identifiants internes aléatoires pour les associer à la place.

2. Pourquoi n’est-il pas recommandé d’utiliser une liste noire pour filtrer les champs sensibles ?

Les listes noires ont tendance à manquer les champs sensibles nouvellement émergés, tandis que les listes blanches ne produisent que des champs conçus, ce qui les rend plus fiables.

3. Avez-vous seulement besoin de gérer le temps de la tâche et la taille du fichier ?

Oui. Ensemble, ces informations peuvent également révéler des détails métier, et les journaux doivent être accompagnés de contrôles d’accès, de périodes de conservation et de processus de suppression.

4. Les journaux de débogage peuvent-ils rester ouverts longtemps pendant le dépannage ?

Pas recommandé. Après une mise à niveau temporaire du journal, il est important de spécifier quand reprendre le mode de débogage afin d’éviter de laisser le mode de débogage trop longtemps en production.

5. Pouvez-vous effacer le gestionnaire global de la base de données métier ?

Pas recommandé. L’exemple ne modifie que le démo logger que vous avez nommé vous-même ; la bibliothèque métier ne doit pas être vidée de l’application globale du gestionnaire.

📝 Résumé

Lors du dépannage des échecs de traduction, le journal doit répondre à la tâche, à la phase et à la raison, plutôt que de sauvegarder le contenu du document. Utiliser des champs de liste blanche, des citations contrôlées et des périodes de conservation claires est essentiel pour équilibrer efficacité de dépannage et sécurité des documents.

Faites l’expérience dès maintenant : téléchargez votre document pour commencer à traduire, tout en conservant la mise en forme originale

Mis à jour le 2026-11-13