1+ import os
2+ import logging
3+ import sys
4+
5+ # Use current working directory for logs
6+ LOGS_DIR = os .path .join (os .getcwd (), "logs" )
7+
8+ print (f"Current working directory: { os .getcwd ()} " )
9+ print (f"Logs directory: { LOGS_DIR } " )
10+
11+ # Configure logging
12+ logger = logging .getLogger ()
13+
14+
15+ def setup_logging (demo_name : str , log_dir : str = LOGS_DIR ) -> logging .Logger :
16+ """Set up logging to both console and file.
17+
18+ Args:
19+ demo_name: Name of the demo for log file naming
20+
21+ Returns:
22+ Configured logger instance
23+ """
24+ try :
25+ # Create logs directory if it doesn't exist
26+ os .makedirs (log_dir , exist_ok = True )
27+ print (f"Created logs directory at: { log_dir } " )
28+
29+ # Use a fixed log filename based on demo name (without timestamp)
30+ log_file = os .path .join (log_dir , f"{ demo_name } .log" )
31+ print (f"Log file will be created at: { log_file } " )
32+
33+ # Clear the existing log file if it exists
34+ with open (log_file , "w" ) as f :
35+ # Empty the file by opening it in write mode
36+ pass
37+ print (f"Initialized log file: { log_file } " )
38+
39+
40+ logger .setLevel (logging .DEBUG )
41+
42+ # Clear existing handlers if any
43+ if logger .handlers :
44+ logger .handlers .clear ()
45+
46+ # File handler for logging to file
47+ file_handler = logging .FileHandler (log_file )
48+ file_formatter = logging .Formatter ("%(asctime)s - %(levelname)s - %(message)s" )
49+ file_handler .setFormatter (file_formatter )
50+ file_handler .setLevel (logging .DEBUG )
51+
52+ # Console handler for logging to console
53+ console_handler = logging .StreamHandler ()
54+ console_formatter = logging .Formatter ("%(message)s" )
55+ console_handler .setFormatter (console_formatter )
56+ console_handler .setLevel (logging .INFO )
57+
58+ # Create a filter to exclude embedding-related log messages
59+ class EmbeddingFilter (logging .Filter ):
60+ def filter (self , record ):
61+ # Skip any log messages containing "embedding" or "vector"
62+ return not any (
63+ term in record .getMessage ().lower ()
64+ for term in ["embedding" , "vector" , "encoded" ]
65+ )
66+
67+ # Add the filter to both handlers
68+ embedding_filter = EmbeddingFilter ()
69+ file_handler .addFilter (embedding_filter )
70+ console_handler .addFilter (embedding_filter )
71+
72+ # Add handlers to logger
73+ logger .addHandler (file_handler )
74+ logger .addHandler (console_handler )
75+
76+ # Log a test message to verify logging is working
77+ logger .info (f"Logging initialized for { demo_name } " )
78+ print (f"Logging setup complete for { demo_name } " )
79+
80+ return logger
81+ except Exception as e :
82+ print (f"Error setting up logging: { e } " )
83+ # Fallback to basic console logging
84+ logging .basicConfig (level = logging .INFO )
85+ return logging .getLogger ()
86+
87+
88+
0 commit comments