mirror of
https://github.com/m1ngsama/tracker.git
synced 2025-12-24 10:51:43 +00:00
Major improvements and features: - Integrate all monitoring modules (config, alert, logger, temperature) - Add comprehensive error handling throughout codebase - Fix data exporter directory creation issue - Improve process monitor CPU accuracy with proper intervals - Fix logger file handle management New features: - Alert system with configurable thresholds - Automatic logging to daily log files - Data export to JSON/CSV formats - Configuration management via config.json - Temperature monitoring support CI/CD: - Add GitHub Actions workflows for automated testing - Add release workflow for automatic package building - Multi-platform testing (Linux, macOS, Windows) - Python 3.8-3.12 compatibility testing Package distribution: - Add setup.py and pyproject.toml for PyPI distribution - Add MANIFEST.in for proper file inclusion - Add comprehensive CHANGELOG.md - Update README with full documentation Bug fixes: - Fix ResourceWarning in logger - Add ZombieProcess exception handling - Improve error handling in all metric collection methods
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""
|
|
Logging functionality for tracker
|
|
"""
|
|
|
|
import logging
|
|
import os
|
|
from datetime import datetime
|
|
|
|
|
|
class TrackerLogger:
|
|
def __init__(self, log_dir='logs'):
|
|
self.log_dir = log_dir
|
|
self.setup_logger()
|
|
|
|
def setup_logger(self):
|
|
"""Setup logging configuration"""
|
|
if not os.path.exists(self.log_dir):
|
|
os.makedirs(self.log_dir)
|
|
|
|
log_file = os.path.join(
|
|
self.log_dir,
|
|
f"tracker_{datetime.now().strftime('%Y%m%d')}.log"
|
|
)
|
|
|
|
# Clear any existing handlers to prevent duplicate logging
|
|
logger = logging.getLogger('SystemTracker')
|
|
logger.handlers.clear()
|
|
|
|
# Create handlers
|
|
file_handler = logging.FileHandler(log_file)
|
|
stream_handler = logging.StreamHandler()
|
|
|
|
# Create formatter and add it to handlers
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
file_handler.setFormatter(formatter)
|
|
stream_handler.setFormatter(formatter)
|
|
|
|
# Add handlers to logger
|
|
logger.addHandler(file_handler)
|
|
logger.addHandler(stream_handler)
|
|
logger.setLevel(logging.INFO)
|
|
|
|
self.logger = logger
|
|
|
|
def log_stats(self, stats_type, stats_data):
|
|
"""Log system statistics"""
|
|
self.logger.info(f"{stats_type}: {stats_data}")
|
|
|
|
def log_alert(self, message):
|
|
"""Log alert messages"""
|
|
self.logger.warning(f"ALERT: {message}")
|
|
|
|
def log_error(self, error_message):
|
|
"""Log error messages"""
|
|
self.logger.error(f"ERROR: {error_message}")
|