Dzienniki są potrzebne do rozwiązywania problemów z błędami w dokumentach, ale nie ma potrzeby rejestrowania pełnego tekstu.

Logi są potrzebne do zlokalizowania błędów w tłumaczeniu, ale nie ma potrzeby drukowania całej umowy, numeru identyfikacyjnego czy tokena pobrania. Dziennik powinien odpowiadać na pytanie „które zadanie, na którym etapie i dlaczego się nie powiódł”, zamiast stać się drugą biblioteką dokumentów pozbawioną zarządzania uprawnieniami.

— Zaleca się używanie pól białej listy i wyświetlanie tylko zaprojektowanych pól, takich jak identyfikator zadania wewnętrznego, etap, kategoria błędu i czasochłonność.

  • Czarna lista łatwo pomija nowe wrażliwe pola, a projekcja białej listy jest bardziej niezawodna.
  • Wartości pól nadal wymagają sprawdzenia pod względem długości i typu, w przeciwnym razie pełny tekst zostanie wrzucony do pola niewłaściwej kategorii, a nazwy z białej listy nie zostaną zapisane.
  • Logi muszą być wyposażone w kontrolę dostępu, okres przechowywania i proces usuwania, a poziom logów powinien zostać przywrócony w odpowiednim czasie po rozwiązaniu problemu.

Dzienniki są wymagane do rozwiązywania problemów z błędami w tłumaczeniu dokumentów, ale nie muszą zawierać pełnego tekstu umowy, numeru identyfikacyjnego ani tokenu pobierania. W tym artykule wyjaśniono, jak utworzyć dziennik z odpowiedzią „które zadanie nie powiodło się, na jakim etapie i dlaczego"bez kopiowania dokumentów klienta do dziennika.

Odpowiednimi czytelnikami są programiści oraz personel operacyjny i konserwacyjny odpowiedzialny za usługi tłumaczenia dokumentów, dokowanie interfejsów tłumaczeniowych lub utrzymywanie dzienników w tle. Po przeczytaniu możesz zaprojektować zestaw pól białej listy, sprawdzić, czy dziennik nie zawiera oryginalnego tekstu, a także ustawić okres przechowywania i zakres dostępu na potrzeby rozwiązywania problemów.

W przykładach wykorzystano próbki syntetyczne w celu zademonstrowania metod przetwarzania, a kod został sprawdzony w izolowanym środowisku, ale nie stanowi to gwarancji działania wszystkich rzeczywistych plików lub produktu. Przed przystąpieniem do przetwarzania ważnych dokumentów prosimy o zachowanie oryginałów i zapoznanie się z nimi zgodnie z poniższymi granicami i punktami akceptacji.

Co należy zapisać w dzienniku rozwiązywania problemów? Wniosek w jednym zdaniu

Dziennik rejestruje tylko dozwolone pola, takie jak identyfikator zadania, etap, kategoria błędu i czasochłonność, ale nie rejestruje treści dokumentu ani poświadczeń.

twoja sytuacjaZalecane praktykipowód
Musisz wiedzieć, które zadanie się nie powiodłoRejestrowanie losowego identyfikatora zadania wewnętrznegoMożliwość lokalizowania problemów bez ujawniania nazw plików i ścieżek użytkownika
Należy określić, na jakim etapie znajduje się kartaZapisz pseudonim sceniczny i czasNie ma potrzeby stosowania każdego tekstu źródłowego i tłumaczenia
Wniosek został odrzucony przez firmę upstreamRejestruj znormalizowane kategorie błędówW dzienniku nie należy wprowadzać pełnej treści żądania uwierzytelnienia
Aby rozwiązać problem, trzeba wrócić do oryginałuKorzystanie z referencji w kontrolowanym systemieLinki, które można trwale pobrać publicznie, są narażone na ryzyko wycieku

Zacznij od pól, które mogą rejestrować

Czarna lista może łatwo pominąć nowe wrażliwe pola. Bardziej ostrożnym podejściem jest wyprowadzanie tylko zaprojektowanych pól, na przykład:

  • Wewnętrzny identyfikator zadania
  • Etap przetwarzania
  • kategoria błędu
  • czasochłonne

Poniższy przykład syntezy wykorzystuje projekcję białej listy, dzięki czemu pełny tekst i tokeny na wejściu nie są wprowadzane do dziennika.

Dziennik weryfikacji nie zawierał oryginalnego tekstu.

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)

Przykład modyfikuje jedynie rejestrator demonstracyjny o tej samej nazwie. Nie zaleca się czyszczenia globalnej procedury obsługi aplikacji w bibliotece biznesowej. Wartości pól wymagają jeszcze weryfikacji pod względem długości i typu. Jeśli umieścisz pełny tekst użytkownika w error_code, sama nazwa na białej liście Cię nie uratuje.

Identyfikator stowarzyszenia zamiast poufnych treści

W poniższej tabeli wymieniono typowe wymagania dotyczące rozwiązywania problemów, a także zalecane i niezalecane zapisy.

Problemy do zbadaniaPolecane nagraniaNagrywanie nie zalecane
Która misja zakończyła się niepowodzeniemLosowy wewnętrzny identyfikator zadaniaPełna nazwa pliku użytkownika i jego ścieżka
Który etap zajmuje czasEtapy i czasochłonneKażdy akapit tekstu źródłowego i tłumaczenia
Dlaczego Upstream odmawia?Standaryzacja kategorii błędówPełne żądanie z nagłówkiem uwierzytelniania
Jak znaleźć oryginałOdniesienia w systemie sterowanymStałe dostępny link do publicznego pobrania

Okres retencji jest równie ważny jak zakres dostępu

Nawet jeśli dziennik nie zawiera tekstu głównego, połączenie czasu zadania, języka i rozmiaru pliku może ujawnić informacje biznesowe. Logi powinny być opatrzone kontrolą dostępu, okresami przechowywania oraz procesami usuwania.

Podczas rozwiązywania problemów tymczasowo podnieś poziom logu, wyjaśnij, kiedy wznowić operacje i unikaj zbyt długiego pozostawania trybu debugowania w środowisku produkcyjnym.

Integracja tłumaczeń zapewnia także jasne i powściągliwe logi

Podczas integracji z OmniDoc (wpis produktu) rejestrowane jest jedynie powiązanie między zadaniami lokalnymi a zdalnymi; pliki przesyłane przez użytkowników nie powinny być kopiowane do logów dla łatwiejszego rozwiązywania problemów.

Dobry raport problemu może wyjaśnić etap awarii i warunki powtarzalności, jednocześnie zapewniając, że dokumenty klienta trafiają wyłącznie w obrębie autoryzowanych ścieżek przetwarzania.

Źródła: Python logging.

📊 Porównanie rdzenia

MetodaZaletyRyzyko
listaMetoda pisania jest prosta i łatwa do opanowaniaWrażliwe pola, które łatwo się pojawiają, są pomijane
Biała listaTylko zaprojektowane pola są wyjściowe, z wyraźnymi granicamiNależy planować pola z wyprzedzeniem oraz weryfikować długość i typ wartości pól

🎯 Która metoda ci odpowiada?

Jeśli potrzebujesz znaleźć zadanie tłumaczeniowe

Rejestruje losowe wewnętrzne identyfikatory zadań i etapy awarii, bez zapisywania pełnej nazwy pliku użytkownika ani ścieżki.

Jeśli chcesz radzić sobie z błędami interfejsu upstream

Rejestruj standaryzowane kategorie błędów, ale nie rejestruj pełnych żądań z nagłówkami uwierzytelniającymi.

Jeśli rozwiązujesz problemy online

Tymczasowo podnieś poziom kłod i przywróć natychmiast po inspekcji.

Jeśli chcesz projektować pola logarytmiczne

Priorytetowo traktuj whitelist i weryfikuj długość oraz typ wartości pól.

❓ Najczęściej zadawane pytania (FAQ)

1. Czy dziennik może rejestrować pełną nazwę pliku użytkownika?

Nie polecam. Pełna nazwa pliku i ścieżka nie są zalecane do nagrywania; możesz użyć losowych wewnętrznych ID zadań do powiązania.

2. Dlaczego nie zaleca się używania czarnej listy do filtrowania wrażliwych pól?

Czarne listy zwykle pomijają nowo powstałe wrażliwe pola, podczas gdy białe listy generują jedynie pola zaprojektowane, co czyni je bardziej wiarygodnymi.

3. Czy wystarczy zarządzać czasem zadania i rozmiarem pliku?

Tak. Razem te informacje mogą również ujawniać szczegóły biznesowe, a logi powinny być uzupełnione kontrolą dostępu, okresami przechowywania oraz procesami usuwania.

4. Czy logi debugowania można długo utrzymywać otwarte podczas rozwiązywania problemów?

Nie polecam. Po tymczasowym ulepszeniu poziomu logu ważne jest, aby określić, kiedy wznowić tryb debugowania, aby nie zostawiać go zbyt długo w środowisku produkcyjnym.

5. Czy możesz usunąć globalny handler z bazy danych firm?

Nie polecam. Przykład modyfikuje tylko demo logger, który sam sobie nazwałeś; biblioteka biznesowa nie powinna być opróżniona z globalnej aplikacji handlera.

📝 Podsumowanie

Podczas rozwiązywania problemów z tłumaczeniem, dziennik powinien odpowiadać na zadanie, fazę i powód, zamiast zapisywać treść dokumentu. Stosowanie pól białej listy, kontrolowanych cytowań i okresów przejrzystości jest niezbędne, aby zrównoważyć efektywność rozwiązywania problemów z bezpieczeństwem dokumentów.

Doświadczenie teraz: Prześlij dokument, aby zacząć tłumaczyć, zachowując oryginalne formatowanie

Zaktualizowano 2026-11-13