GPT-Researcher / backend /server /logging_config.py
Shreyas094's picture
Upload 528 files
372531f verified
raw
history blame
2.76 kB
import logging
import json
import os
from datetime import datetime
from pathlib import Path
class JSONResearchHandler:
def __init__(self, json_file):
self.json_file = json_file
self.research_data = {
"timestamp": datetime.now().isoformat(),
"events": [],
"content": {
"query": "",
"sources": [],
"context": [],
"report": "",
"costs": 0.0
}
}
def log_event(self, event_type: str, data: dict):
self.research_data["events"].append({
"timestamp": datetime.now().isoformat(),
"type": event_type,
"data": data
})
self._save_json()
def update_content(self, key: str, value):
self.research_data["content"][key] = value
self._save_json()
def _save_json(self):
with open(self.json_file, 'w') as f:
json.dump(self.research_data, f, indent=2)
def setup_research_logging():
# Create logs directory if it doesn't exist
logs_dir = Path("logs")
logs_dir.mkdir(exist_ok=True)
# Generate timestamp for log files
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
# Create log file paths
log_file = logs_dir / f"research_{timestamp}.log"
json_file = logs_dir / f"research_{timestamp}.json"
# Configure file handler for research logs
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# Get research logger and configure it
research_logger = logging.getLogger('research')
research_logger.setLevel(logging.INFO)
# Remove any existing handlers to avoid duplicates
research_logger.handlers.clear()
# Add file handler
research_logger.addHandler(file_handler)
# Add stream handler for console output
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
research_logger.addHandler(console_handler)
# Prevent propagation to root logger to avoid duplicate logs
research_logger.propagate = False
# Create JSON handler
json_handler = JSONResearchHandler(json_file)
return str(log_file), str(json_file), research_logger, json_handler
# Create a function to get the logger and JSON handler
def get_research_logger():
return logging.getLogger('research')
def get_json_handler():
return getattr(logging.getLogger('research'), 'json_handler', None)