|
4 | 4 | import sys |
5 | 5 | import platform |
6 | 6 | import psutil |
| 7 | +from logging.handlers import RotatingFileHandler |
7 | 8 |
|
8 | 9 | def strip_ansi_codes(text): |
9 | 10 | """Remove ANSI color codes from a string.""" |
@@ -37,20 +38,23 @@ def log_system_info(logger): |
37 | 38 | except Exception as e: |
38 | 39 | logger.error(f"Failed to log system information: {e}") |
39 | 40 |
|
| 41 | +class _RotatingFileHandler(RotatingFileHandler): |
| 42 | + def doRollover(self): |
| 43 | + super().doRollover() |
| 44 | + # Include system info after rollover |
| 45 | + log_system_info(logging.getLogger("debug_logger")) |
40 | 46 |
|
41 | 47 | def setup_logging(): |
42 | | - # Determine the user's Documents directory |
43 | | - #documents_dir = os.path.join(os.path.expanduser("~"), "Documents") |
44 | | - documents_dir = "./Logs" |
45 | | - log_dir = os.path.join(documents_dir, "ProjectBabble") |
| 48 | + # Log to program directory |
| 49 | + log_dir = "./Logs" |
46 | 50 | os.makedirs(log_dir, exist_ok=True) |
47 | | - log_file = os.path.join(log_dir, "latest.log") |
| 51 | + log_file = os.path.join(log_dir, "ProjectBabble.log") |
48 | 52 |
|
49 | 53 | # Set up logging |
50 | 54 | logger = logging.getLogger("debug_logger") |
51 | 55 | logger.setLevel(logging.DEBUG) |
52 | 56 |
|
53 | | - file_handler = logging.FileHandler(log_file, mode='w', encoding='utf-8') |
| 57 | + file_handler = _RotatingFileHandler(log_file, mode='w', maxBytes=2000000, backupCount=1, encoding='utf-8') |
54 | 58 | file_handler.setLevel(logging.DEBUG) |
55 | 59 | formatter = logging.Formatter('%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') |
56 | 60 | file_handler.setFormatter(formatter) |
|
0 commit comments