tracker/logger.py
m1ngsama 5529c0d573 Release v1.0.0: Complete system monitoring solution
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
2025-11-25 16:12:46 +08:00

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}")