How to Enable and Read CS 1.6 Server Logs
Enable game logging, understand the HLDS log format, find AMX Mod X logs, and set up log-based stats tools like HLStatsX CE.
Enable Logging in server.cfg
Add these cvars to cstrike/server.cfg:
log on
mp_logfile 1
mp_logmessages 1
mp_logresolve 0
mp_logdetail 0
log on — enables the logging system. Without this, nothing gets written.
mp_logfile 1 — writes logs to files in cstrike/logs/. Without this, logs only print to the console.
mp_logmessages 1 — includes player chat in the logs. Useful for moderation.
mp_logresolve 0 — keep this off. When enabled, the server does a DNS reverse-lookup on every player's IP to get a hostname. This adds latency to every connection and provides no useful information. Leave it at 0.
mp_logdetail — controls damage logging verbosity. 0 logs kills only. 3 logs every bullet hit with weapon, location, and damage. Useful for stats tools but generates large log files.
Log File Location
Logs are written to:
cstrike/logs/LYYYYMMDD.log
A new file is created each day. The filename format is L followed by the date: L20260427.log.
Log Format
Every line follows the HLDS standard format:
L 04/27/2026 - 14:32:01: "PlayerName<12><STEAM_0:0:12345678><CT>" killed "OtherPlayer<7><STEAM_0:0:87654321><TERRORIST>" with "ak47"
Breaking that down:
L— HLDS log prefix04/27/2026 - 14:32:01— timestamp"PlayerName<12><STEAM_0:0:12345678><CT>"— player name, entity ID, Steam ID, teamkilled— event typewith "ak47"— weapon
Key Log Event Types
| Event text | What it means |
|---|---|
killed |
Player kill |
committed suicide |
Self-kill |
connected, address |
Player connected |
disconnected |
Player left |
joined team |
Team change |
World triggered "Round_Start" |
Round began |
World triggered "Round_End" |
Round ended |
World triggered "Game_Commencing" |
Halftime or game start |
Team triggered "Win" |
Team win event |
say |
Public chat |
say_team |
Team chat |
Bad rcon_password |
Failed RCON attempt |
AMX Mod X Logs
AMX writes its own logs separately:
cstrike/addons/amxmodx/logs/
These include plugin load errors, admin actions (kicks, bans, map changes), and any plugin-specific logging. Check here first when a plugin isn't behaving — the error message is almost always in this directory.
AMX creates a new log file each day using the same LYYYYMMDD.log naming convention.
Log-Based Stats Tools
The HLDS log format is standardized and several community tools parse it to generate player stats:
HLStatsX CE — the classic web-based stats system. Runs a Perl daemon that reads your logs in real time (or parses existing logs) and populates a MySQL database. Generates leaderboards, weapon stats, kill feeds, and player profiles. Open source, self-hosted.
GameMe — cloud-based stats service. Point it at your server's log output and it handles everything. Easier to set up than HLStatsX but requires sending your logs to a third-party service.
Both tools expect the standard HLDS log format, so as long as logging is enabled correctly, either will work out of the box.
Rotating Old Logs
Log files accumulate fast on active servers with mp_logdetail 3. Set up a cron job to compress and rotate them:
# Add to crontab: daily log compression
0 3 * * * find /home/gameserver/hlds/cstrike/logs -name "*.log" -mtime +7 -exec gzip {} \;
This compresses logs older than 7 days at 3 AM daily.