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}")