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 Mar 25, 2012I've tried, the person who runs the reportrts is very opposed to doing much of anything I suggest. (I suggested 4 solid ideas, and he chose to say no to all 4, but add in sign support which I personally think is quite useless.)
Basically, I'm counting on you bud :p As long as I can just specify a specific command(s) to listen for and it logs, I have no problem doing some linux trickery to count it out manually, it's not an issue. Even if it were 1 large file, I can still do this with no issue. It's extremely simple.
@Tuesday \ grep "Modname: " /minecraft/plugins/cclogger/log.txt > modname.log \ wc -1 modname.log \ echo "" > /minecraft/plugins/cclogger/log.txt
Boom, done. Easy as that. Just need a way to listen for specific commands, and log it. (To answer your next question, no reportrts does not (for what ever reason) log to server.log when a player runs the command. It simply shows up: [info] [reportrts] Ticket completed. With no addition information.)
-
View User Profile
-
Send Message
Posted Mar 24, 2012@PhiberOptikx
I feel like a better solution to that idea would be a separate custom plugin that counts the /complete, tallies it up every week, and then logs it to a file. Then it would restart logging.
-
View User Profile
-
Send Message
Posted Mar 24, 2012Sorry for the late response:
Yes, if you could please keep everything separated that would be best. Here's an example of exactly how I'm going to use it.
Moderators on my server are required to /modreq complete X amount of tickets per week. So let's say my minimum is 25 tickets a week. If I can auto clear out (via Linux crontab) per week the wordwhitelist folder
/minecraft/plugins/CCLogger/watched/Jimmybob32/log.txt /minecraft/plugins/CCLogger/watched/Frankieboy/log.txt /minecraft/plugins/CCLogger/watched/Billykid/log.txt
With: rm -rf /minecraft/plugins/CCLogger/watched/* every week, it allows me to tally up how many /complete commands they ran which would directly reflect how many tickets they have closed. (Yes I'm aware of the loop holes like that, but it won't be hard to find out.)
So, that's basically what my grand plan is, and anything to get to that point would be wonderful.
Thank's bud!
-
View User Profile
-
Send Message
Posted Mar 19, 2012@PhiberOptikx
I'm working on adding the command/word whitelist option for the next update. Would writing the whitelisted command/chat to a separate file be beneficial? Or would it be better to have both separate file and global whitelist abilities?
-
View User Profile
-
Send Message
Posted Mar 18, 2012I'm gonna play with it tonight, is my earlier situation still there. Or has that been added/resolved?
-
View User Profile
-
Send Message
Posted Mar 14, 2012Oops, forgot to add a few crucial parts the plugin before uploading :/ My bad, an update will be coming shortly tomorrow with the command blacklist function. For now, the plugin logs all commands :(
-
View User Profile
-
Send Message
Posted Mar 14, 2012Almost done with the complete recode of CCLogger.
-
View User Profile
-
Send Message
Posted Mar 10, 2012@Alrik94
I really look forward to seeing your work progress. If there's anything I can do to help just shoot me a PM.
-
View User Profile
-
Send Message
Posted Mar 10, 2012Really nice plugin, thanks for this!
-
View User Profile
-
Send Message
Posted Mar 9, 2012@PhiberOptikx
I should have made it more clear when I wrote the description. What I meant by that was being able to choose whether or not to log commands in general or chat in general. Same thing with individual player chat. Once I am less busy I can try and figure something out. Hopefully soon :)
-
View User Profile
-
Send Message
Posted Mar 9, 2012Ah my mistake, so did I read this wrong?
"Ability to choose what is logged."
Im looking to monitor at most 10 commands and only from a specific group (groupmanager) can i achieve this in the plugins current state?
If not maybe add a - cclogger.ignore flag.
(ie: i want to log my staffing teams use of /modreq claim to make sure they are doing their jobs)
-
View User Profile
-
Send Message
Posted Mar 7, 2012@PhiberOptikx
That section is for command exclusions, not inclusions. But, hey, another idea for me to add.
-
View User Profile
-
Send Message
Posted Mar 7, 2012I've posted 3 commands in the commands: section, but it still seems to log every single command. Am I doing something wrong? I'd like to monitor only those 3 specific commands.
-
View User Profile
-
Send Message
Posted Mar 4, 2012@uncovery
i dont think it is a good idea with /2012/02/22/player. just scroll to the date you need) and it will be difficult to look for some key words (commands or some messages)
-
View User Profile
-
Send Message
Posted Mar 1, 2012@Crayder
You can increase the maximum allowed files through Linux somehow, assuming that you're using Linux. Right now, I'm not sure how I can fix that. It could be that CCLogger triggered the error, but your server already has tons of files open.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@Crayder
Thanks for the report! I will check into that right now actually...
-
View User Profile
-
Send Message
Posted Feb 29, 2012Have a really active server, 50 or so were online yesterday and I managed to crash from CCLogger with "Too many files open!" error. Was wondering if you knew how to fix that? Maybe more frequent fclosing?
-
View User Profile
-
Send Message
Posted Feb 26, 2012@Crayder
Don't worry, this plugin won't go inactive :) I've just been busy with other stuff and have been working on another plugin.
-
View User Profile
-
Send Message
Posted Feb 26, 2012Friendly reminder that people still care about this plugin and to see if you're ready for R5 and an eventual 1.2 release!
-
View User Profile
-
Send Message
Posted Feb 22, 2012It would be great if this could create sub-folders like
OR ideally writes all chat to a MySQL database...