CCLogger
What is CCLogger?
CCLogger logs player activity on Paper servers. Chat messages, commands, joins, quits, kicks - it all gets recorded to your storage backend of choice.
You can use flat files for simplicity, SQLite if you want queries without external dependencies, or connect to MySQL, MongoDB, or Redis for larger setups. All writes happen async so your server tick rate stays clean.
Features
Logging
Chat - Messages with timestamp, world, and coordinates
Commands - All commands (blacklist supported for /login, /register, etc.)
Connections - Join, quit, kick events
Output options:
- Global log files (chat.log, commands.log)
- Per-player files (players/Steve.log)
- Custom format with placeholders:
%date,%name,%content,%world,%x,%y,%z
Storage
File - Text files, human-readable (no setup)
SQLite - Local database, no config needed (no setup)
MySQL - Shared database for networks (requires MySQL server)
MongoDB - Document store, scales horizontally (requires MongoDB)
Redis - Fast, in-memory, good for high volume (requires Redis)
All backends use async writes and connection pooling.
Privacy
IP logging modes for GDPR compliance:
- disabled - IPs not stored
- truncated - Last octet zeroed (192.168.1.x becomes 192.168.1.0)
- hashed - bcrypt hash with daily rotating salt
- full - Complete IP stored
Commands can be blacklisted with regex patterns. Players with cclogger.exempt permission are excluded from logging.
Alerts
Monitor keywords and commands in real-time:
- Define trigger words (e.g., "hack", "cheat", "exploit")
- Define trigger commands (e.g., "/op", "/gamemode")
- Ops with
cclogger.notifyget in-game alerts - All triggers logged to file
Web Dashboard
CCLogger includes a modern React-based web dashboard (disabled by default):
Dashboard
- Stats overview with log type breakdown
- Log distribution pie chart
- Activity timeline showing recent activity
- Top active players at a glance
Live Timeline
- Real-time activity feed that auto-refreshes
- Pause/resume with keyboard shortcuts
- Filter by log type (Chat, Command, Login, Logout)
- Jump to live button when scrolled
Log Browser
- Full-text search across all logs
- Filter by type, player, date range
- Pagination for large result sets
- Export to JSON or CSV
Player Profiles
- Minecraft avatar display (via Crafatar)
- Activity statistics per player
- Recent activity history
- Click any player name to view profile
REST API
POST /api/auth/token- Get JWT tokenGET /api/logs- Query logs with filtersGET /api/logs/player/{name}- Logs for one playerGET /api/logs/search?q=term- Search log contentGET /api/stats- Statistics
JWT auth with rate limiting.
Requirements
- Paper 1.21+ or Folia
- Java 21+
Commands
/cclogger- Shows help/cclogger reload- Reload config (requirescclogger.reload)/cclogger count <word> [player]- Count word occurrences (requirescclogger.statistics)/cclogger clear- Archive and clear logs (requirescclogger.admin)
Permissions
cclogger.*- Everything (default: OP)cclogger.notify- Receive alerts (default: OP)cclogger.exempt- Not logged (default: false)cclogger.reload- Reload config (default: OP)cclogger.statistics- Count command (default: OP)cclogger.admin- Clear/archive (default: OP)cclogger.web- Web API access (default: OP)
Setup
- Drop JAR in
plugins/ - Restart server
- Edit
plugins/CCLogger/config.yml /cclogger reload
Default config works immediately. Change storage.type if you want something other than SQLite.
Config Example
storage:
type: sqlite # file, sqlite, mysql, mongodb, redis
privacy:
ip-logging: disabled
notifications:
enabled: true
chat-keywords:
- "hack"
- "cheat"
web:
enabled: false
port: 8080
-
View User Profile
-
Send Message
Posted Jul 13, 2013@Alrik94
I will have a look later on this week to. (It's to hot now)
Thx again.
-
View User Profile
-
Send Message
Posted Jul 13, 2013@dutchy1001
http://stackoverflow.com/questions/6865538/solving-a-communications-link-failure-with-jdbc-and-mysql
Take a look at this stackoverflow post. It has similar issues, including reference to "too many connections to a single database".
-
View User Profile
-
Send Message
Posted Jul 13, 2013@dutchy1001
Do you have the latest version of SQLibrary?
-
View User Profile
-
Send Message
Posted Jul 13, 2013@Alrik94
It's the only plugin that has this problem all other 16 I have on the MySQL are working properly.
If 16 db's are fine vs 1 db not fine I'm not sure were to look for the problem then.
-
View User Profile
-
Send Message
Posted Jul 12, 2013@dutchy1001
That looks like something else is causing the connection loss to the MySQL database.
-
View User Profile
-
Send Message
Posted Jul 12, 2013@Alrik94
unfortunaly errors happen again.
I have reverted back to SQLite
Just out curiosity who else is using MySQL with or without problems?
-
View User Profile
-
Send Message
Posted Jul 10, 2013@Alrik94
Many thanks for sorting this out.
testing the MySQL db today
-
View User Profile
-
Send Message
Posted Jul 9, 2013@dutchy1001
I believe I have fixed this problem with the new way that SQLibrary is used. It just requires you to download the SQLibrary plugin and install it into your plugins directory for MySQL to work with CCLogger.
Having the library's source code in CCLogger created issues with other plugins that used SQLibrary, but only depended on it, instead of directly accessing the source code.
-
View User Profile
-
Send Message
Posted Jul 8, 2013I just uploaded a new update to the plugin. It includes better performance and more detailed login/logout logging. Also, now you have to download SQLibrary for databases like MySQL and SQLite to work.
-
View User Profile
-
Send Message
Posted Jul 1, 2013@Alrik94
No, they aren't
-
View User Profile
-
Send Message
Posted Jun 25, 2013can you add ip for playerLogin: true
like
[06/26/2013 11:52:10 AM] xxx logged in. ip:xxx.xxx.xxx.xxx
thanks
-
View User Profile
-
Send Message
Posted Jun 22, 2013@albireox
Are these players by chance OPs?
-
View User Profile
-
Send Message
Posted Jun 21, 2013Some of my players don't have log files. Do you know why this would happen?
-
View User Profile
-
Send Message
Posted Jun 18, 2013@broluigi
hey broluigi put this in your perms under the rank for ops... - -cclogger.exempt
-
View User Profile
-
Send Message
Posted Jun 7, 2013how do i make it so even OPS arent hidden from the logger?
-
View User Profile
-
Send Message
Posted Jun 1, 2013personally i prefer not using MySQL with this plugin. just easier to open the file from inside my server folder. (also easier deleting and editing it)
-
View User Profile
-
Send Message
Posted May 29, 2013@Alrik94
the server is on 24/7 and mostly overnight (uk) the server is empty.
As I have 10 other plugins using MySQL without any problem I dont see why this one does.
This is also the reason why I dont want to mess with the MySQL settings incase I bugger up the other 10.
-
View User Profile
-
Send Message
Posted May 28, 2013@StanoMalek
What things would you like to see with web statistics?
-
View User Profile
-
Send Message
Posted May 28, 2013@dutchy1001
I don't know if this means that CCLogger is the problem here. It could just be your MySQL configuration. Nobody else has had any issues that I know of. Was the server left on for a long period of time with nobody logging on or off, or doing anything chat or command related?
-
View User Profile
-
Send Message
Posted May 26, 2013@Alrik94
As I thought this would be a hell of job to find back (I swithed back to SQLite 10days+), the first log I opend was a major one with a long log of the probs.
http://pastebin.com/x0U6pKbn
If you read the line 27 of the log it says something about 'autoReconnect=true'. None of my other MySQL db's have this problem so i dont like to mess with the MySQL settings(if not needed).
I hope you can do some with this.
greetz dutchy