194 lines
5.2 KiB
Markdown
194 lines
5.2 KiB
Markdown
|
|
# Logs Directory
|
||
|
|
|
||
|
|
This directory contains detailed application logs for debugging and monitoring purposes.
|
||
|
|
|
||
|
|
## Log Files
|
||
|
|
|
||
|
|
### TLD Import Logs (`tld_import_YYYY-MM-DD.log`)
|
||
|
|
|
||
|
|
Comprehensive logs for TLD registry import operations including:
|
||
|
|
|
||
|
|
- **Start/End Operations**: Marked with `=== START:` and `=== END:` separators
|
||
|
|
- **Batch Processing**: Each batch's start time, TLDs processed, and duration
|
||
|
|
- **Individual TLD Processing**:
|
||
|
|
- TLD name and ID
|
||
|
|
- Fetch time (in milliseconds)
|
||
|
|
- Database update time
|
||
|
|
- Data found (WHOIS server, registry URL, dates)
|
||
|
|
- Success/failure status
|
||
|
|
- Error messages with exception details
|
||
|
|
- **Progress Tracking**:
|
||
|
|
- Current step in workflow
|
||
|
|
- Last processed ID
|
||
|
|
- Completion percentage
|
||
|
|
- Remaining TLDs
|
||
|
|
- **Statistics**:
|
||
|
|
- Batch processing time
|
||
|
|
- Average time per TLD
|
||
|
|
- Success/failure counts
|
||
|
|
- Overall progress
|
||
|
|
|
||
|
|
### Cron Job Logs (`cron.log`)
|
||
|
|
|
||
|
|
Logs from automated domain checking cron jobs (created by `cron/check_domains.php`).
|
||
|
|
|
||
|
|
## Log Levels
|
||
|
|
|
||
|
|
- **DEBUG**: Detailed diagnostic information
|
||
|
|
- **INFO**: General informational messages (normal operations)
|
||
|
|
- **WARNING**: Warning messages (non-critical issues)
|
||
|
|
- **ERROR**: Error messages (failures that don't stop execution)
|
||
|
|
- **CRITICAL**: Critical errors (failures that stop execution)
|
||
|
|
|
||
|
|
## Log Format
|
||
|
|
|
||
|
|
```
|
||
|
|
[YYYY-MM-DD HH:MM:SS] [LEVEL] Message | Context: {"key":"value"}
|
||
|
|
```
|
||
|
|
|
||
|
|
Example:
|
||
|
|
```
|
||
|
|
[2025-10-08 10:04:23] [INFO] Processing TLD [1/50]: .aaa (ID: 1)
|
||
|
|
[2025-10-08 10:04:23] [INFO] TLD .aaa: SUCCESS - Found WHOIS server, registry URL | Context: {"fetch_time_ms":245.67,"update_time_ms":12.34,"data_fields":2}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Troubleshooting TLD Import Issues
|
||
|
|
|
||
|
|
### Issue: Import Stuck at Same Progress
|
||
|
|
|
||
|
|
**Check the logs for:**
|
||
|
|
1. Look for "last_processed_id" - is it advancing?
|
||
|
|
2. Check for FAILED messages - which TLDs are failing?
|
||
|
|
3. Look at "batch_time_seconds" - is it taking too long?
|
||
|
|
|
||
|
|
**Example log analysis:**
|
||
|
|
```bash
|
||
|
|
# Find failed TLDs
|
||
|
|
grep "FAILED" logs/tld_import_2025-10-08.log
|
||
|
|
|
||
|
|
# Check last processed IDs
|
||
|
|
grep "Updating last processed ID" logs/tld_import_2025-10-08.log
|
||
|
|
|
||
|
|
# Find slow TLDs (over 5 seconds)
|
||
|
|
grep "fetch_time_ms" logs/tld_import_2025-10-08.log | grep -E '"fetch_time_ms":[5-9][0-9]{3}|[0-9]{5,}'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Issue: FastCGI Timeout
|
||
|
|
|
||
|
|
**Symptoms in logs:**
|
||
|
|
- Last log entry shows a TLD being processed
|
||
|
|
- No "Batch statistics" or "END:" marker
|
||
|
|
- Apache/Nginx error log shows "Connection reset by peer"
|
||
|
|
|
||
|
|
**Solutions:**
|
||
|
|
1. Reduce batch size in `TldRegistryService.php`:
|
||
|
|
```php
|
||
|
|
$tldsNeedingWhois = $this->getTldsNeedingWhoisData(25, $lastProcessedId); // Reduced from 50
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Increase PHP/FastCGI timeout:
|
||
|
|
```ini
|
||
|
|
; php.ini
|
||
|
|
max_execution_time = 300
|
||
|
|
```
|
||
|
|
|
||
|
|
### Issue: Repeated Failures on Same TLDs
|
||
|
|
|
||
|
|
**Check logs for:**
|
||
|
|
```bash
|
||
|
|
# Find TLDs that consistently fail
|
||
|
|
grep "FAILED" logs/tld_import_*.log | sort | uniq -c | sort -rn
|
||
|
|
```
|
||
|
|
|
||
|
|
**Common causes:**
|
||
|
|
- TLD doesn't have IANA RDAP/WHOIS data
|
||
|
|
- Network timeout to IANA servers
|
||
|
|
- Invalid TLD format
|
||
|
|
|
||
|
|
## Analyzing Performance
|
||
|
|
|
||
|
|
### Average Processing Time
|
||
|
|
```bash
|
||
|
|
# Get average fetch time per TLD
|
||
|
|
grep "fetch_time_ms" logs/tld_import_2025-10-08.log | grep -oP '"fetch_time_ms":\K[0-9.]+' | awk '{sum+=$1; n++} END {print "Average: " sum/n " ms"}'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Slowest TLDs
|
||
|
|
```bash
|
||
|
|
# Find slowest 10 TLDs
|
||
|
|
grep "fetch_time_ms" logs/tld_import_2025-10-08.log | grep -oP 'TLD \.\w+.*fetch_time_ms":\K[0-9.]+' | sort -rn | head -10
|
||
|
|
```
|
||
|
|
|
||
|
|
### Batch Performance
|
||
|
|
```bash
|
||
|
|
# Show all batch statistics
|
||
|
|
grep "Batch statistics" logs/tld_import_2025-10-08.log
|
||
|
|
```
|
||
|
|
|
||
|
|
## Log Retention
|
||
|
|
|
||
|
|
Logs are organized by date and are not automatically deleted. You may want to:
|
||
|
|
|
||
|
|
1. **Manual cleanup**: Delete old logs periodically
|
||
|
|
```bash
|
||
|
|
find logs/ -name "*.log" -mtime +30 -delete # Delete logs older than 30 days
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Set up logrotate** (Linux):
|
||
|
|
```
|
||
|
|
/path/to/Domain Monitor/logs/*.log {
|
||
|
|
daily
|
||
|
|
rotate 30
|
||
|
|
compress
|
||
|
|
missingok
|
||
|
|
notifempty
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Accessing Logs
|
||
|
|
|
||
|
|
### Via Command Line
|
||
|
|
```bash
|
||
|
|
# View latest TLD import log
|
||
|
|
tail -f logs/tld_import_$(date +%Y-%m-%d).log
|
||
|
|
|
||
|
|
# View last 100 lines
|
||
|
|
tail -100 logs/tld_import_2025-10-08.log
|
||
|
|
|
||
|
|
# Search for errors
|
||
|
|
grep ERROR logs/tld_import_2025-10-08.log
|
||
|
|
|
||
|
|
# Watch for specific TLD
|
||
|
|
grep ".example" logs/tld_import_2025-10-08.log
|
||
|
|
```
|
||
|
|
|
||
|
|
### Via PHP
|
||
|
|
The `Logger` class provides a `tail()` method:
|
||
|
|
```php
|
||
|
|
$logger = new Logger('tld_import');
|
||
|
|
$lastLines = $logger->tail(100); // Get last 100 lines
|
||
|
|
```
|
||
|
|
|
||
|
|
## Important Notes
|
||
|
|
|
||
|
|
- **Log files grow large**: A complete TLD import (~1500 TLDs) generates ~2-5 MB of logs
|
||
|
|
- **Context data is JSON**: Can be parsed programmatically for analysis
|
||
|
|
- **Timestamps are in server timezone**: Check your PHP timezone setting
|
||
|
|
- **Logs are NOT web-accessible**: The `.htaccess` in the project root blocks access to this directory
|
||
|
|
|
||
|
|
## Related Files
|
||
|
|
|
||
|
|
- `app/Services/Logger.php` - Logger implementation
|
||
|
|
- `app/Services/TldRegistryService.php` - Uses logger for TLD import operations
|
||
|
|
- `cron/check_domains.php` - Uses file_put_contents for cron.log
|
||
|
|
|
||
|
|
## Support
|
||
|
|
|
||
|
|
If you're experiencing import issues:
|
||
|
|
1. Check the relevant log file for error messages
|
||
|
|
2. Look for patterns in failed TLDs
|
||
|
|
3. Check Apache/Nginx error logs for timeout issues
|
||
|
|
4. Verify network connectivity to IANA servers
|
||
|
|
5. Consider reducing batch size for slower servers
|
||
|
|
|