
mcsl
MCSL is a dedicated server admin tool that lets you share your console logs, crash logs, timings, latest log and more. The platform allows sharing and management logs much easier.
📋 MCSL — MineCraftServerLogs
The fastest way to capture, analyse, and share your Minecraft server logs.
MCSL is a lightweight Minecraft server plugin that gives server administrators a single command to upload, parse, redact, and share server logs — all powered by HasteLog, a fast and free log-sharing service. No more copy-pasting giant log files into chat or Discord. One command and your log is live on the web, ready to share with support staff, developers, or your community.
[17:34:12 INFO]: ──────────────────────────────────────────────────
[17:34:12 INFO]: MCSL — MineCraftServerLogs v1.0.0
[17:34:12 INFO]: Powered by https://logs.protectcord.com
[17:34:12 INFO]: ──────────────────────────────────────────────────
[17:34:12 INFO]: /mcsl upload [lines|all|errors] — Upload latest.log to HasteLog
[17:34:12 INFO]: /mcsl info — Print server info summary
[17:34:12 INFO]: /mcsl errors [lines] — Show recent errors in chat
[17:34:12 INFO]: /mcsl players — Show player events from log
[17:34:12 INFO]: /mcsl plugins — List all plugins & status
[17:34:12 INFO]: /mcsl share — Upload full diagnostic report
[17:34:12 INFO]: /mcsl crash — Upload latest crash report
[17:34:12 INFO]: ──────────────────────────────────────────────────
🎯 Who Is This Plugin For?
MCSL is built specifically for server administrators and developers who spend time diagnosing issues on Bukkit, Spigot, Paper, Purpur, or Folia servers.
| If you are... | MCSL helps you... |
|---|---|
| A server owner with a broken plugin | Upload errors instantly and share the link with the plugin's support team |
| A developer debugging your own plugin | Get a full diagnostic report — version, all loaded plugins, errors, TPS — in one link |
| A network admin managing multiple servers | Run /mcsl share on any node and get a single URL to compare behaviour across servers |
| A support volunteer on a help Discord | Ask users to run /mcsl upload errors instead of pasting 3,000 lines of log |
| A hosting provider | Include MCSL on your pre-installed plugin list — your clients get self-service diagnostics |
✨ Features
🔼 One-Command Log Upload
Upload your entire latest.log — or just the last N lines, or only errors — to logs.protectcord.com with a single command. You get back a short, shareable URL that you can click directly from your in-game chat.
🔍 Intelligent Log Parsing
MCSL automatically scans your logs and categorises what it finds:
- Errors & Exceptions — full stack traces,
[ERROR],[SEVERE]entries - Warnings —
[WARN]and[WARNING]entries - Plugin events — which plugins enabled, disabled, or failed to load
- Player events — join, leave, kick, and ban entries
- Crash signals — Minecraft crash report headers and unhandled exceptions
🔒 Privacy-First Redaction
Before anything leaves your server, MCSL scrubs sensitive data:
- IPv4 and IPv6 addresses →
[REDACTED_IP] - JWT tokens →
[REDACTED_TOKEN] - API keys and Bearer tokens →
[REDACTED_KEY] - JDBC/database passwords →
password=[REDACTED] - Your own custom regex patterns (defined in
config.yml)
All redaction is configurable and can be turned on or off per category. Player IPs are redacted by default.
📊 Full Server Diagnostic Reports
/mcsl share produces a rich, structured report including:
- Server software, version, and full build string
- All loaded plugins with version and enabled/disabled status
- All loaded mods (Forge 1.12, Forge 1.13+, and Fabric all supported via reflection)
- Memory usage, TPS (1m/5m/15m), and server uptime
- MOTD, gamemode, difficulty, online mode, max players
- Parsed errors, warnings, and player events
- The full log tail
💥 Automatic Crash Detection
If your server crashes unexpectedly, MCSL's JVM shutdown hook fires automatically, uploads the last 1,000 log lines along with the parsed error summary, and logs the HasteLog URL to console — even if the Bukkit scheduler is no longer running. Online operators receive an in-game notification with the link.
⚡ Fully Asynchronous
Every upload runs off the main server thread. Your TPS will never drop because of a log upload.
🧩 Mod Server Support
MCSL detects and lists mods on:
- Forge (1.12.x via
fml.common.Loader, 1.13+ viafml.ModList) - Fabric (via
net.fabricmc.loader.api.FabricLoader)
📸 In Action
/mcsl upload 500
[MCSL] Uploading last 500 lines to HasteLog...
[MCSL] Uploaded (last 500 lines) successfully!
[MCSL] View report: https://logs.protectcord.com/GvuuyVDqN2
The URL is clickable in-game — click it to open in your browser.
/mcsl info
──────────────────────────────────────────────────
Server Information
──────────────────────────────────────────────────
Name: My Minecraft Server
Software: Paper 1.20.4
Version: git-Paper-388 (MC: 1.20.4)
Port: 25565
Online Mode: true
Gamemode: survival
Difficulty: normal
Max Players: 100
Online: 12 / 100
Memory: 1842MB used / 4096MB max (committed: 2048MB)
Uptime: 6h 34m 12s
TPS: 19.98 / 19.97 / 19.95 (1m/5m/15m)
Plugins: 32 enabled / 33 total
──────────────────────────────────────────────────
/mcsl plugins
──────────────────────────────────────────────────
Plugins — 32 enabled / 33 total
──────────────────────────────────────────────────
[+] EssentialsX v2.20.1 by EssentialsX Team
[+] LuckPerms v5.4.108 by Luck
[+] Vault v1.7.3 by MilkBowl
[+] WorldEdit v7.3.1 by sk89q
[-] BrokenPlugin v1.0.0 by SomeAuthor
──────────────────────────────────────────────────
[+]= enabled,[-]= disabled/failed to load
/mcsl errors
[MCSL] Found 3 errors and 7 warnings in the last 500 lines.
[MCSL] Last 3 errors:
[ERROR] Could not load 'plugins/BrokenPlugin.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
[ERROR] Error occurred while enabling BrokenPlugin v1.0.0 (Is it up to date?)
[MCSL] Use /mcsl upload errors to upload the full error log.
Uploaded Report (example)
════════════════════════════════════════════════════════════
MCSL — Server Diagnostic Report
════════════════════════════════════════════════════════════
Generated : 2026-04-20 17:34:12 UTC
Generator : MCSL v1.0.0 (https://logs.protectcord.com)
SERVER INFORMATION
────────────────────────────────────────────────────────────
Name : My Minecraft Server
Software : Paper 1.20.4
Full Version : git-Paper-388 (MC: 1.20.4)
MOTD : Welcome to My Server
Online Mode : true
Port : 25565
Max Players : 100
Online Now : 12 / 100
Memory : 1842MB used / 4096MB max
Uptime : 6h 34m 12s
TPS : 19.98 / 19.97 / 19.95
PLUGINS (32 enabled / 33 total)
────────────────────────────────────────────────────────────
[+] EssentialsX v2.20.1
[+] LuckPerms v5.4.108
[-] BrokenPlugin v1.0.0 ← DISABLED
ERRORS & EXCEPTIONS (3 found)
────────────────────────────────────────────────────────────
[ERROR] Could not load 'plugins/BrokenPlugin.jar'
...
FULL LOG (500 lines)
────────────────────────────────────────────────────────────
... (redacted log content) ...
🚀 Installation
- Download
MCSL-1.0.0.jarfrom the Releases tab - Drop it into your server's
/plugins/folder - Restart or reload your server
- A
plugins/MCSL/config.ymlwill be generated automatically - Run
/mcsl helpin-game or from console
No configuration required out of the box. The plugin ships with a pre-configured API key and sane defaults.
Requirements
| Requirement | Version |
|---|---|
| Java | 8 or newer |
| Server | Bukkit / Spigot / Paper / Purpur / Folia |
| Minecraft | 1.8.8 — 1.21.x |
⚙️ Configuration
plugins/MCSL/config.yml is generated on first run. Every option is documented inline.
# HasteLog API settings
api:
timeout-ms: 50000 # HTTP request timeout
# Privacy & redaction
redaction:
enabled: true # Master toggle
redact-player-ips: true # Hide IPv4/IPv6 addresses
redact-server-ip: false # Hide the server's own IP (for /mcsl share)
redact-api-keys: true # Hide JWT tokens, Bearer keys, sk- keys, etc.
custom-patterns: [] # Your own regex patterns, e.g. "password=[^\\s]+"
# Log upload behaviour
upload:
default-lines: 25000 # Lines uploaded when no argument is given
include-server-info-header: true
include-plugin-list: true
include-mod-list: true
async: true # Always recommended
# Automatic actions
auto:
upload-on-crash: true # Auto-upload on abnormal server exit
upload-on-start: false # Upload a summary when the server starts
notify-ops-on-crash-upload: true
# /mcsl share options
share:
include-server-ip: true
include-port: true
include-player-count: true
include-performance: true
# Chat formatting
messages:
prefix: "&8[&bMCSL&8]&r "
Live Config Changes
You can change most settings without restarting:
/mcsl config redaction.redact-player-ips false
/mcsl config upload.default-lines 1000
/mcsl config auto.upload-on-crash false
/mcsl reload
⚠️ The API URL and API key are baked into the JAR and cannot be changed through config. This is intentional — it prevents misconfiguration and keeps the global key secure.
📖 Commands Reference
All commands require the mcsl.use permission (op by default).
/mcsl upload [argument]
Uploads latest.log to HasteLog and returns a clickable URL.
| Argument | Behaviour |
|---|---|
| (none) | Upload the last upload.default-lines lines (default: 25,000) |
500 | Upload the last 500 lines |
all | Upload the entire log file |
errors | Upload only lines containing errors or warnings |
Example:
/mcsl upload 1000
/mcsl upload errors
/mcsl upload all
/mcsl share
Generates and uploads a full structured diagnostic report — server info, plugin list, mod list, TPS, memory, errors, warnings, player events, and the full log tail — in a single HasteLog document.
This is the command to use when asking for help. Share the link with a support team, developer, or community Discord and they have everything they need to diagnose your issue.
/mcsl info
Prints a formatted server information panel directly to your chat or console. Includes software version, performance metrics, player count, and plugin summary. Nothing is uploaded — it's local only.
/mcsl errors [lines]
Scans the last N lines of latest.log and prints a summary of errors and warnings directly in chat. Shows the last 10 errors inline. Suggests /mcsl upload errors if there are more.
/mcsl errors → scan last 25,000 lines
/mcsl errors 500 → scan last 500 lines
/mcsl players
Scans the log for player events (join, leave, lost connection, kick, ban) and prints the last 15 in chat. Useful for quickly checking recent player activity without reading the full log.
/mcsl plugins
Lists every plugin currently loaded by the server, with its version, author(s), and enabled/disabled status. Disabled or failed plugins are shown with [-] in red so they're immediately visible.
/mcsl mods
Lists all loaded Forge or Fabric mods, including mod ID, display name, and version. Returns a message if the server is vanilla/Bukkit-only with no mod loader.
/mcsl crash
Finds the most recently modified file in the crash-reports/ directory, uploads it with a plugin list header, and returns a HasteLog URL. Useful after a crash to quickly get the report online.
/mcsl config <key> <value>
Change a config setting at runtime without editing config.yml directly. Supports tab completion for key names and boolean values.
/mcsl config redaction.enabled false
/mcsl config share.include-server-ip false
/mcsl config upload.default-lines 5000
/mcsl reload
Reloads config.yml from disk and recompiles any custom redaction patterns.
🔐 Permissions
| Permission | Default | Description |
|---|---|---|
mcsl.use | op | Access to all /mcsl commands |
mcsl.upload | op | Upload logs to HasteLog |
mcsl.info | op | View server info |
mcsl.share | op | Generate full diagnostic reports |
mcsl.config | op | Change config at runtime |
mcsl.use is a parent permission that grants all children automatically.
🛡️ Privacy & Security
What is redacted by default?
| Data | Redacted? | Replacement |
|---|---|---|
| Player IPv4 addresses | ✅ Yes | [REDACTED_IP] |
| Player IPv6 addresses | ✅ Yes | [REDACTED_IPv6] |
| JWT tokens | ✅ Yes | [REDACTED_TOKEN] |
API keys (sk-, Bearer, hl_, etc.) | ✅ Yes | [REDACTED_KEY] |
| JDBC/database passwords | ✅ Yes | password=[REDACTED] |
Server IP (in /mcsl share) | ❌ No (configurable) | [SERVER_IP] |
| Player usernames | ❌ No | — |
| World names | ❌ No | — |
What is uploaded?
Only the content you explicitly request. MCSL never uploads in the background unless you have auto.upload-on-crash: true or auto.upload-on-start: true in your config. The API key is embedded in the JAR and cannot be read from config.yml.
Where is the data stored?
All uploads go to logs.protectcord.com, which is a HasteLog instance operated by ProtectCord. Documents are accessible to anyone with the link.
📊 Analytics
MCSL collects anonymous usage statistics via bStats. This includes:
- Number of servers using the plugin
- Minecraft and server software versions in use
No log content, player data, or server-identifying information is ever collected. You can disable bStats server-wide in plugins/bStats/config.yml.
❓ FAQ
Q: Does /mcsl upload upload the entire log file?
No — by default it uploads the last 25,000 lines. Use /mcsl upload all for the full file, or specify a number like /mcsl upload 500.
Q: Can players see the uploaded URL?
Only operators (or players with mcsl.use) can run any MCSL command. The URL is shown only to the command sender.
Q: Is the API key safe?
The API key is XOR-obfuscated and compiled into the JAR — it does not appear as a readable string in the bytecode. It is also excluded from config.yml entirely and cannot be changed or read by server admins.
Q: Does this work on Folia? MCSL loads on Folia servers. Commands, log reading, and uploads all work. TPS detection uses Folia's scheduler where available.
Q: Can I use a self-hosted HasteLog instance? Not through config — the URL is baked into the JAR. Contact ProtectCord if you need a custom build for your hosting environment.
Q: Does it work with Forge or Fabric? MCSL is a Bukkit plugin, so it runs on hybrid servers like Mohist (Forge+Bukkit) or Cardboard (Fabric+Bukkit). Mod detection works on these platforms via reflection.
🔗 Links
| Resource | Link |
|---|---|
| HasteLog Service | logs.protectcord.com |
| bStats Dashboard | bstats.org/plugin/bukkit/MCSL/30872 |
Made with ❤️ by ProtectCord · Powered by HasteLog
