8.2 KiB
Erupe Log Analyzer
A comprehensive suite of Go tools to analyze Erupe server logs (erupe.log).
Features
- Filter logs by level, logger, message content, or time range
- Analyze errors with grouping, statistics, and stack trace display
- Track connections and player sessions with detailed statistics
- Generate statistics about log activity, operations, and patterns
- Tail logs in real-time like
tail -f
Installation
cd tools/loganalyzer
go build -o loganalyzer
This will create a loganalyzer binary in the current directory.
Usage
The tool provides multiple commands, each with its own options:
./loganalyzer <command> [options]
Commands
1. filter - Filter logs by various criteria
Filter logs by level, logger, message content, or time range.
Examples:
# Show only errors
./loganalyzer filter -f ../../erupe.log -level error
# Show warnings from the last hour
./loganalyzer filter -f ../../erupe.log -level warn -since 1h
# Filter by logger (supports wildcards)
./loganalyzer filter -f ../../erupe.log -logger "channel-4*"
# Search for specific message content
./loganalyzer filter -f ../../erupe.log -msg "connection reset"
# Show only last 50 entries
./loganalyzer filter -f ../../erupe.log -tail 50
# Count matching entries without displaying them
./loganalyzer filter -f ../../erupe.log -level error -count
Options:
-f- Path to log file (default:erupe.log)-level- Filter by log level (info, warn, error, fatal)-logger- Filter by logger name (supports wildcards with *)-msg- Filter by message content (case-insensitive)-since- Show logs since this time (RFC3339 or duration like '1h', '30m')-until- Show logs until this time (RFC3339)-color- Colorize output (default: true)-count- Only show count of matching entries-tail- Show last N entries
2. errors - Analyze errors and warnings
Extract and analyze errors with grouping by message, caller, or logger.
Examples:
# Show error summary grouped by message
./loganalyzer errors -f ../../erupe.log -summary
# Show detailed error information with examples
./loganalyzer errors -f ../../erupe.log -detailed
# Show errors with stack traces
./loganalyzer errors -f ../../erupe.log -stack -detailed
# Group errors by caller instead of message
./loganalyzer errors -f ../../erupe.log -group caller -summary
# Show more examples per error group
./loganalyzer errors -f ../../erupe.log -detailed -limit 20
Options:
-f- Path to log file (default:erupe.log)-group- Group errors by: message, caller, or logger (default: message)-stack- Show stack traces-limit- Limit number of examples per error group (default: 10)-summary- Show summary only (grouped by error type)-detailed- Show detailed error information
3. connections - Analyze player connections and sessions
Track connection events, player sessions, and connection statistics.
Examples:
# Show connection statistics
./loganalyzer connections -f ../../erupe.log
# Show individual player sessions
./loganalyzer connections -f ../../erupe.log -sessions
# Show detailed session information
./loganalyzer connections -f ../../erupe.log -sessions -v
# Filter by player name
./loganalyzer connections -f ../../erupe.log -player "Sarah" -sessions
# Show only statistics without sessions
./loganalyzer connections -f ../../erupe.log -stats -sessions=false
Options:
-f- Path to log file (default:erupe.log)-player- Filter by player name-sessions- Show individual player sessions-stats- Show connection statistics (default: true)-v- Verbose output
Statistics provided:
- Total connections
- Unique players and IP addresses
- Channel distribution
- Connections per day
- Top IP addresses
- Disconnect reasons
4. stats - Generate comprehensive statistics
Analyze overall log statistics, activity patterns, and operation counts.
Examples:
# Show basic statistics
./loganalyzer stats -f ../../erupe.log
# Show detailed statistics including top loggers and messages
./loganalyzer stats -f ../../erupe.log -detailed
# Show top 20 instead of default 10
./loganalyzer stats -f ../../erupe.log -detailed -top 20
Options:
-f- Path to log file (default:erupe.log)-top- Show top N messages/loggers (default: 10)-detailed- Show detailed statistics
Statistics provided:
- Total log entries and time range
- Entries by log level
- Operation counts (saves, broadcasts, stage changes)
- Top loggers and messages
- Activity by day and hour
- Unique callers
5. tail - Follow logs in real-time
Watch log file for new entries, similar to tail -f.
Examples:
# Follow log file showing last 10 lines first
./loganalyzer tail -f ../../erupe.log
# Show last 50 lines and follow
./loganalyzer tail -f ../../erupe.log -n 50
# Follow only errors
./loganalyzer tail -f ../../erupe.log -level error
# Don't follow, just show last 20 lines
./loganalyzer tail -f ../../erupe.log -n 20 -follow=false
Options:
-f- Path to log file (default:erupe.log)-n- Number of initial lines to show (default: 10)-follow- Follow the log file (default: true)-level- Filter by log level-color- Colorize output (default: true)
Common Use Cases
Finding the cause of a server crash
# Look for errors around a specific time
./loganalyzer filter -f erupe.log -level error -since "2025-11-12T23:00:00Z"
# Analyze all errors with stack traces
./loganalyzer errors -f erupe.log -stack -detailed
Analyzing player activity
# See which players connected today
./loganalyzer connections -f erupe.log -sessions -v
# Find all activity for a specific player
./loganalyzer connections -f erupe.log -player "Sarah" -sessions -v
Monitoring server health
# Real-time monitoring of errors
./loganalyzer tail -f erupe.log -level error
# Check overall statistics
./loganalyzer stats -f erupe.log -detailed
# Analyze connection patterns
./loganalyzer connections -f erupe.log -stats
Investigating specific issues
# Find all connection reset errors
./loganalyzer filter -f erupe.log -msg "connection reset"
# Analyze database errors
./loganalyzer errors -f erupe.log -group caller | grep -i database
# Check activity during peak hours
./loganalyzer stats -f erupe.log -detailed
Log Format Support
The tool supports both log formats found in Erupe logs:
-
JSON format (structured logs):
{"level":"info","ts":1762989571.547817,"logger":"main","caller":"Erupe/main.go:57","msg":"Starting Erupe"} -
Timestamp format (simple logs):
2025-11-12T23:19:31.546Z INFO commands Command Help: Enabled
Performance
The tool uses streaming parsing to handle large log files efficiently:
- Memory-efficient streaming for filter and stats commands
- Fast pattern matching for message filtering
- Handles log files with millions of entries
Output
By default, output is colorized for better readability:
- Errors are displayed in red
- Warnings are displayed in yellow
- Info messages are displayed in green
Colorization can be disabled with -color=false for piping to files or other tools.
Tips
- Use
-countwith filter to quickly see how many entries match without displaying them all - Combine
filterwithgrepfor more complex searches:./loganalyzer filter -f erupe.log | grep pattern - Use
-tailto limit output when exploring logs interactively - The
-sinceoption accepts both absolute timestamps and relative durations (1h, 30m, 24h) - Use
-summarywith errors command for a quick overview before diving into details
Building from Source
cd tools/loganalyzer
go build -o loganalyzer
Or to install it system-wide:
go install
Contributing
Feel free to add new commands or improve existing ones. The codebase is modular:
parser.go- Log parsing logicfilter.go- Filter commanderrors.go- Error analysis commandconnections.go- Connection tracking commandstats.go- Statistics generationtail.go- Real-time log followingmain.go- Command routing
License
Part of the Erupe project.