| import logging |
| import sys |
| import os |
|
|
| logging.basicConfig( |
| level=logging.INFO, |
| format='%(asctime)s - %(levelname)s - %(message)s', |
| handlers=[ |
| logging.FileHandler("aiexp.log"), |
| logging.StreamHandler(sys.stdout) |
| ]) |
| logger = logging.getLogger(__name__) |
|
|
| def log_message(message): |
| logger.info(message) |
| print(message, flush=True) |
| sys.stdout.flush() |
|
|
| CHUNKS_LOG_FILE = "all_chunks_debug.log" |
|
|
| def init_chunks_log(): |
| """ |
| Создает (или перезаписывает) файл лога чанков. |
| Вызывать один раз при старте/перезапуске системы. |
| """ |
| try: |
| with open(CHUNKS_LOG_FILE, 'w', encoding='utf-8') as f: |
| f.write("=== РЕЕСТР ВСЕХ ЧАНКОВ (ОЧИЩЕНО ПРИ ЗАПУСКЕ) ===\n") |
| log_message(f"Файл лога чанков очищен: {CHUNKS_LOG_FILE}") |
| except Exception as e: |
| log_message(f"Ошибка создания лога чанков: {e}") |
|
|
| def log_full_chunk_to_file(doc, index, total): |
| """ |
| Записывает полное содержимое чанка в отдельный файл. |
| """ |
| try: |
| doc_id = doc.metadata.get('document_id', 'UNKNOWN') |
| doc_type = doc.metadata.get('type', 'text') |
| |
| |
| header = f"\n{'='*20} CHUNK #{index+1}/{total} [{'TABLE' if doc_type=='table' else 'TEXT'}] {'='*20}\n" |
| meta_info = f"DOC ID: {doc_id}\nMETADATA: {doc.metadata}\n" |
| content_sep = f"{'-'*20} CONTENT START {'-'*20}\n" |
| footer = f"\n{'-'*20} CONTENT END {'-'*20}\n" |
| |
| with open(CHUNKS_LOG_FILE, 'a', encoding='utf-8') as f: |
| f.write(header) |
| f.write(meta_info) |
| f.write(content_sep) |
| f.write(doc.text) |
| f.write(footer) |
| |
| except Exception as e: |
| |
| print(f"Ошибка записи чанка в лог: {e}") |
|
|