What are log files and why are they important?
Log files are the digital memory of your web server. They record every access, every error and every security-related event. For website operators, developers and administrators, they are an indispensable tool for fault analysis, security monitoring and performance optimisation.
Typical use cases for log file analysis:
- Troubleshooting: Why is my website showing a 500 error? Which script is causing the problem?
- Security analysis: Have there been any attempts to attack my website? Which IP addresses are trying to gain unauthorised access?
- Performance optimisation: Which pages are accessed most frequently? Are there any resources that take a particularly long time to load?
- Debugging: Identifying PHP errors, failed database connections or configuration issues
- Visitor analysis: Where do my visitors come from? Which bots are crawling my site?
Available log types
Your SpeedIT hosting service provides you with various types of log files, each of which records different information:
| Log type | Contents | Typical application |
|---|---|---|
| access.log | All HTTP requests to your website | Visitor analytics, traffic monitoring, bot detection |
| error.log | Web server and PHP error messages | Troubleshooting, debugging, security analysis |
Location of the log files
Your log files are located in a dedicated directory on the server. The exact path is:
/home/users/YOUR-USERNAME/logs/your-domain.de/
The logs have been organised for greater clarity sorted by domain name. If you are running several domains on your hosting package, you will find a separate subfolder for each domain.
Structure of the log directories:
/home/users/YOUR-USERNAME/
└── logs/
├── your-domain.de/
│ ├── access.log
│ ├── error.log
├── second-domain.de/
│ ├── access.log
│ ├── error.log
└── ...
Analysing log files - your options
There are several ways to access your log files:
Method 1: Using the KeyHelp File Manager
The easiest way to view it occasionally:
- Log in to the web server
- Go to General → File Manager
- Navigate to the root directory using the arrow with the three dots, then click on
logs - Select the desired domain and open the log file
Tip: In the File Manager, you can view files directly, download them or open them using the built-in editor.
Method 2: Via FTP/SFTP
Ideal for downloading large log files for local analysis:
- Connect to your server using an FTP client (e.g. FileZilla)
- Navigate to the directory
logs(directly in the home directory) - Select the domain and download the files you require
Recommended settings for SFTP:
| Setting | Value |
|---|---|
| Minutes | SFTP (SSH File Transfer Protocol) |
| Server | Your server name (e.g. merkur.web.de-serv.de) |
| Port | 22 |
| Username | Your FTP username |
Method 3: Via SSH (for advanced users)
The most powerful method for real-time analysis and filtering:
- Connect to your server via SSH
- Navigate to the log directory:
cd ~/logs/your-domain.de/ - Use Linux commands for analysis (see section below)
Analysing log files - Useful SSH commands
With SSH access, you can search through and filter logs efficiently. Here are the most important commands:
Basic commands
| Command | Function |
|---|---|
cat error.log |
View entire file |
tail -100 error.log |
Show the last 100 lines |
tail -f error.log |
Real-time output (live monitoring) |
head -50 access.log |
Show the first 50 lines |
less error.log |
Scroll through the file page by page (press 'q' to exit) |
wc -l access.log |
Count the number of lines (queries) |
Search and filter logs
# Search for a specific term
grep "500" error.log
# Search for an IP address
grep "192.168.1.100" access.log
# Find errors from a specific date
grep "19/Dec/2025" error.log
# Find ModSecurity blocks
grep "ModSecurity" error.log
# Find PHP fatal errors
grep "Fatal error" error.log
# Display all 404 errors
grep '" 404 ' access.log
Advanced analyses
# Top 10 IP addresses by number of requests
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
# Top 10 most visited URLs
awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -10
# All 500 errors with timestamps
grep '" 500 ' access.log | awk '{print $1, $4, $7}'
# Count requests per hour
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c
# Only errors from the last hour (approximately)
tail -1000 error.log | grep "$(date +%H:)"
Understanding Log Files - Structure and Interpretation
Access log format
A typical entry in the access log looks like this:
192.168.1.100 - - [19 Dec 2025 14:23:45 +0100] "GET /page.html HTTP/1.1" 200 4523 "https://google.de" "Mozilla/5.0..."
| component | Meaning | Example |
|---|---|---|
| IP address | Visitor’s IP address | 192.168.1.100 |
| Timestamp | Date and time of the enquiry | [19 Dec 2025:14:23:45 +0100] |
| Enquiry | HTTP method and path called | "GET /page.html HTTP/1.1" |
| Status code | HTTP response code from the server | 200 (OK) |
| Size | Bytes transferred | 4523 |
| Referrer | Where did the visitor come from? | ‘https://google.de’ |
| User-Agent | Browser/bot identification | "Mozilla/5.0..." |
Important HTTP status codes
| Code | Meaning | Need for action |
|---|---|---|
| 200 | OK - Request successful | None |
| 301/302 | Redirect (permanent/temporary) | Check whether this is intentional |
| 403 | Access denied | Check permissions |
| 404 | Page not found | Correct broken links |
| 500 | Internal server error | Check the error log! |
| 502/503 | Gateway/service unavailable | Check PHP processes or the backend |
Understanding error log entries
Error logs contain more detailed information about problems:
[Fri 19 Dec 14:30:22.123456 2025] [php:error] [pid 12345] [client 192.168.1.100:54321] PHP Fatal error: Uncaught Error: Call to undefined function xyz() in /www/script.php:42
| component | Meaning |
|---|---|
| Timestamp | When the error occurred |
| Module | Which component is reporting the error (e.g. php, security2) |
| Severity | error, warning, notice |
| Client IP | Which IP address made the request |
| Error message | Detailed description of the problem |
| File and line | Where exactly the error occurred |
Log rotation and retention
To save storage space and keep things organised, log files are automatically rotated:
- Latest logs:
access.log,error.log- contain the current entries - Archived logs:
access.log.1,access.log.2.gzetc. - older logs, some of which are compressed - Retention period: Log files are usually retained for 4-8 weeks
Tip: If you need older logs, download them regularly and archive them locally.
Practical examples of use
Example 1: Debugging a 500 error
Your website is displaying a 500 error. Here’s what to do:
- Open the error log:
tail -100 error.log - Check for PHP errors:
grep "Fatal error\ | "Parse error" error.log - Make a note of the file and line in question
- Fix the error in the code
Example 2: Detecting attempted attacks
You suspect that your website is under attack:
- Checking ModSecurity blocks:
grep "ModSecurity" error.log - Identifying suspicious IP addresses:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20 - Analysing requests from a suspicious IP address:
grep "SUSPECT-IP" access.log
Example 3: Resolving 404 errors for SEO
Broken links harm your SEO ranking:
- List all 404 errors:
grep '" 404 ' access.log | awk '{print $7}' | sort | uniq -c | sort -rn - Please check whether these URLs should exist
- Set up redirects or correct the links
Related articles
- ModSecurity - Your shield against cyber attacks
- Server unavailable / IP block
- Fixing a 500 Internal Server Error
- 404 Not Found - Page not found
Do you need help?
If you need assistance with log analysis or are unable to resolve an error yourself, please contact our support team. Where possible, please provide the relevant log entries - this will significantly speed up the troubleshooting process.