Журнали потрібні для усунення несправностей документа, але немає необхідності реєструвати повний текст.
Журнали потрібні для виявлення помилок перекладу, але немає необхідності роздруковувати весь договір, ідентифікаційний номер або маркер завантаження. Журнал повинен відповідати, «яке завдання, на якому кроці та чому воно не вдалося», а не перетворюватися на другу бібліотеку документів без керування дозволами.
Журнали потрібні для усунення помилок перекладу документів, але журнали не повинні містити повний текст договору, ідентифікаційний номер або маркер завантаження. У цій статті пояснюється, як зробити так, щоб журнал відповідав на питання «яке завдання не вдалося на якому кроці та чому», не копіюючи документи клієнта в журнал.
Відповідними читачами є розробники та персонал з експлуатації та обслуговування, який відповідає за послуги перекладу документів, док-станцію інтерфейсів перекладу або ведення фонових журналів. Після прочитання ви можете створити набір полів білого списку, переконатися, що в журналі не відображається оригінальний текст, і встановити період зберігання та обсяг доступу для усунення несправностей.
У прикладах використовуються синтетичні зразки для демонстрації методів обробки, а код було перевірено в ізольованому середовищі, але це не є гарантією всіх реальних файлів або продуктивності продукту. Перед обробкою важливих документів, будь ласка, збережіть оригінали та перевірте їх відповідно до меж і пунктів прийняття нижче.
Що потрібно записати в журнал усунення несправностей? Висновок одним реченням
Журнал записує лише дозволені поля, такі як ідентифікатор завдання, етап, категорія помилки та витрати часу, але не записує вміст документа та облікові дані.
| ваша ситуація | Рекомендовані практики | причина |
|---|---|---|
| Потрібно знати, яке завдання не виконано | Реєстрація випадкового внутрішнього ідентифікатора завдання | Можливість виявлення проблем без розкриття імен або шляхів файлів користувача |
| Необхідно визначити, на якому етапі знаходиться картка | Запишіть сценічне ім'я та час | Немає потреби в кожному вихідному тексті та перекладі |
| Запит відхилено вищестоящим | Журнал нормалізованих категорій помилок | Повний вміст першокласного запиту автентифікації не слід вводити в журнал |
| Потрібно повернутися до оригіналу для усунення несправностей | Використання посилань у керованій системі | Посилання, які можна постійно завантажувати публічно, піддаються ризику витоку |
Почніть з полів, які дозволено записувати
Чорний список може легко пропустити нові конфіденційні поля. Більш розумним підходом є виведення лише призначених полів, наприклад:
- Ідентифікатор внутрішнього завдання
- Етап обробки
- категорія помилки
- трудомісткі
У наведеному нижче прикладі синтезу використовується проекція білого списку, щоб повний текст і маркери введених даних не вводилися в журнал.
Журнал перевірки не виводить оригінальний текст.
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)
Приклад лише змінює самоіменований демо-реєстратор. Не рекомендується очищати глобальний обробник програми в бізнес-бібліотеці. Значення полів ще потрібно перевірити на довжину та тип. Якщо ви заповнюєте повний текст користувача в error_code, лише назва білого списку вас не врятує.
Ідентифікатор асоціації замість конфіденційного вмісту
У наведеній нижче таблиці наведено загальні вимоги під час усунення несправностей, а також рекомендовані та нерекомендовані записи.
| Проблеми для дослідження | Рекомендовані записи | Запис не рекомендується |
|---|---|---|
| Яке завдання не вдалося | Випадковий ідентифікатор внутрішнього завдання | Повне ім'я файлу користувача та шлях |
| Який етап вимагає часу? | Етапи і трудомісткість | Кожен вихідний текст і переклад |
| Чому наверх за течією відмовився? | Нормовані категорії помилок | Повний запит із заголовком автентифікації |
| Як знайти оригінали | Посилання в контрольованих системах | Постійне загальнодоступне посилання для завантаження |
Період зберігання не менш важливий, ніж обсяг доступу
Навіть якщо в журналі немає тексту, поєднання часу виконання завдання, мови та розміру файлу може виявити ділову інформацію. Журнали повинні супроводжуватися засобами контролю доступу, періодами зберігання та процедурами видалення.
Під час усунення несправностей тимчасово підвищте рівень журналу та вкажіть, коли відновлювати, щоб уникнути тривалого виходу з режиму налагодження у робочому середовищі.
Інтеграція перекладу також може мати чіткі та стримані журнали
Під час підключення до OmniDoc (портал продуктів) вам потрібно лише записати зв’язок між локальними та віддаленими завданнями. Файли, завантажені користувачами, не слід копіювати в журнал для зручності усунення несправностей.
Хороший звіт про проблему описує стадію збою та умови повторення, водночас зберігаючи потоки документів клієнта лише авторизованими шляхами обробки.
Джерела: Python logging.
📊 Основне порівняння
| Шлях | перевага | ризик |
|---|---|---|
| чорний список | Метод написання простий і простий у використанні. | Легко пропустити нові чутливі поля |
| білий список | Виводьте тільки створені поля з чіткими межами | Поля потрібно спланувати заздалегідь, а довжину та тип значень поля перевірити |
🎯 Який спосіб вам підходить?
Якщо вам потрібно знайти завдання перекладу
Реєстрація випадкових ідентифікаторів внутрішніх завдань і етапів збою, а не повних імен файлів або шляхів користувача.
Якщо ви хочете обробляти помилки, про які повідомляє вихідний інтерфейс
Реєстрація нормалізованих класів помилок, а не повних запитів із заголовками автентифікації.
Якщо ви вирішуєте проблеми в Інтернеті
Тимчасово підвищте рівень журналу та відновіть його одразу після усунення несправностей.
Якщо ви хочете створити поля журналу
Віддайте перевагу білому списку та перевірте довжину та тип значень полів.
❓ Часті запитання (FAQ)
1. Чи можна записати повну назву файлу користувача в журнал?
Не рекомендується. Не рекомендується записувати повне ім’я файлу та шлях, замість цього можна використовувати випадкову кореляцію внутрішнього ідентифікатора завдання.
2. Чому не рекомендується використовувати чорний список для фільтрації конфіденційних полів?
Чорний список легко пропускає нові конфіденційні поля, тоді як білий список виводить лише призначені поля, що є більш безпечним.
3. Потрібно керувати лише часом виконання завдання та розміром файлу?
потреба. Комбінація цієї інформації може також розкривати бізнес-інформацію, і журнали повинні супроводжуватися засобами контролю доступу, періодами зберігання та процедурами видалення.
4. Чи можна ввімкнути журнали налагодження на тривалий час під час усунення несправностей?
Не рекомендується. Після тимчасового підвищення рівня журналу необхідно знати, коли його відновити, щоб уникнути виходу з режиму налагодження у робочому середовищі на тривалий час.
5. Чи можна очистити глобальний обробник у бізнес-бібліотеці?
Не рекомендується. Приклад змінює лише самоіменований демо-реєстратор, а глобальний обробник програми не слід очищати в бізнес-бібліотеці.
📝 Підсумок
Під час усунення помилок перекладу журнали мають відповідати на завдання, етапи та причини, а не зберігати вміст документа. Використовуйте поля білого списку, контрольовані посилання та чіткі періоди зберігання, щоб збалансувати ефективність усунення несправностей і безпеку документів.
Спробуйте зараз: завантажте документ, щоб розпочати переклад, зберігаючи вихідний макет


