|
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