How to Read Minecraft Server Console Logs Like a Pro
Learn how to read Minecraft server logs to diagnose crashes, plugin errors, lag spikes and permission issues. Covers log format, common errors and tools for Paper servers.
Why Server Logs Are Your Best Debugging Tool
When something breaks on your Minecraft server, a crash, a plugin failing to load, players getting kicked, the answer is almost always in the logs. Learning how to read minecraft server logs is the single most important skill for any server administrator. It is faster than asking on Discord, more reliable than guessing, and it teaches you how your server actually works under the hood.
This guide covers Paper 1.21+ server logs, but the format is nearly identical for Spigot, Purpur, and Fabric servers.
Where Are the Log Files?
Minecraft servers store logs in two locations:
logs/latest.log, the current session's log. This file is overwritten each time the server starts.logs/folder, compressed archives of previous sessions, named by date (e.g.,2026-05-12-1.log.gz).
If you use a hosting panel like Pterodactyl, the console tab shows the live log stream. But for searching through history, you need the actual files. On a Pterodactyl panel, use the file manager or SFTP to access the logs/ directory.
Anatomy of a Log Line
Every log line follows the same format:
[HH:MM:SS] [Thread/LEVEL]: Message
Example:
[14:23:07] [Server thread/INFO]: [EssentialsX] Enabling EssentialsX v2.20.1
[14:23:07] [Server thread/WARN]: [MyPlugin] Config file not found, generating defaults
[14:23:08] [Server thread/ERROR]: [BrokenPlugin] Error occurred while enabling BrokenPlugin
java.lang.NullPointerException: Cannot invoke method on null object
at com.example.brokenplugin.Main.onEnable(Main.java:42)
Log Levels Explained
- INFO, normal operations. Plugin loaded, world saved, player joined. You can usually ignore these unless troubleshooting.
- WARN, something unusual but not fatal. Missing config values, deprecated API usage, skipped operations. Investigate these when things behave unexpectedly.
- ERROR, something failed. Plugin could not enable, command threw an exception, a task crashed. Always investigate errors.
- FATAL, the server cannot continue. Corrupted world data, missing critical libraries, JVM failures. The server usually shuts down after a FATAL.
Reading Stack Traces
Stack traces are the multi-line error blocks that start with an exception name and list a chain of method calls. They look intimidating but follow a simple pattern:
[14:23:08] [Server thread/ERROR]: [LPX] Error occurred while enabling LPX
java.lang.NoClassDefFoundError: net/luckperms/api/LuckPerms
at com.example.lpx.Main.onEnable(Main.java:15)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342)
How to read this:
- Exception type,
NoClassDefFoundErrormeans a required class is missing. The plugin expects LuckPerms but it is not installed. - First line of the trace,
Main.java:15tells you exactly which file and line number caused the error. This is the most important line. - Remaining lines, show the call chain that led to the error. Read top-to-bottom to trace the execution path.
Common Errors and What They Mean
NullPointerException
java.lang.NullPointerException: Cannot invoke "String.length()"
A plugin tried to use an object that does not exist. Common causes: missing config values, uninitialized variables, or a dependency plugin that failed to load. Check that all required plugins are installed and configs are complete.
NoClassDefFoundError / ClassNotFoundException
java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
A required dependency is missing. In this case, the plugin needs Vault installed. Check the plugin's documentation for required dependencies.
InvalidPluginException
org.bukkit.plugin.InvalidPluginException: Cannot find main class 'com.example.Main'
The plugin.yml references a class that does not exist in the jar. The plugin jar is either corrupted, compiled for a different Java version, or the main field in plugin.yml is wrong.
UnsupportedClassVersionError
java.lang.UnsupportedClassVersionError: com/example/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0)
The plugin was compiled with a newer Java than your server runs. Class file version 65 means Java 21. Check your server's Java version with java -version and upgrade if needed.
Searching Logs Efficiently
Do not read logs line by line. Use search commands to find what matters:
# Find all errors grep -i "error" logs/latest.log # Find a specific plugin's messages grep "MyPlugin" logs/latest.log # Find crash-related lines grep -i -A 5 "exception\|error\|fatal" logs/latest.log # Search compressed old logs zgrep "error" logs/2026-05-12-1.log.gz
The -A 5 flag shows 5 lines after each match, which captures the stack trace below the error line.
Crash Reports
When the server crashes hard, it may generate a file in the crash-reports/ directory. These contain a full system snapshot: loaded plugins, JVM arguments, memory usage, and the stack trace that caused the crash. The most important section is at the top, the crash description and the first stack trace. For more on diagnosing crashes, see Fix Server Crash on Startup.
Lag Diagnosis from Logs
Watch for these warning patterns that indicate lag:
[14:30:12] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 4523ms or 90 ticks behind
This means the server fell behind on tick processing. If you see this frequently, use Spark to identify which plugin or world is consuming the most tick time.
[14:30:15] [Server thread/WARN]: [RegionFile] Region file chunks/r.0.0.mca has inconsistent chunk data
Corrupted chunk data. This can cause crashes when players enter the affected area. Use tools like MCA Selector to inspect and repair corrupt regions.
Log Reading Checklist
- Start at the bottom of the log, the most recent events are the most relevant.
- Search for ERROR and WARN first, ignore INFO unless you need the full timeline.
- Read the first line of any stack trace, it tells you the exception type and usually the cause.
- Check the plugin name in brackets, it tells you which plugin to update, reconfigure, or remove.
- Compare timestamps, if errors cluster around the same second, they are likely related to the same root cause.
Mastering how to read minecraft server logs turns you from someone who panics at errors into someone who fixes them in minutes. Every problem your server will ever have leaves a trace in the logs, you just need to know where to look.
Want to see custom plugins in action? Join Astroworld MC, IP play.astroworldmc.com, Java + Bedrock.