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 Jan 19, 2013@Alrik94
was more like a freeze, that kicked everybody out. There was that message: Main thread didn't repsonse after 10 seconds, and some stacktrace for minecraft internals, but no bukkit or cclogger or other plugin hints. this just happend right after "17:39:12 [WARNING] [CCLogger] CCLogger[SQLite] Query failed: near "s": syntax error" that's why I think the crash might have been connected to this error message..
And thank you for thinking about the suggestions :)
-
View User Profile
-
Send Message
Posted Jan 19, 2013@blablubbabc
Could you post a log file with everything related to this crash, if possible?
Also, I've made a note of your suggestions. The toggle-able function is a really good idea.
-
View User Profile
-
Send Message
Posted Jan 18, 2013could you add an option, that players don't receive their own "notifications" ? I dont want admins to be exempted from loggin, just that they don't get spammed by there own notifications..
And maybe something like an "log-rank" so players of lower rank don't receive notification. Could be realised with simple permission nodes, like "cclogger.rank."+number
Thank you
Edit: And maybe a command that let you toggle the notifications on and off completly for a player. On large servers with many stuff being notificated this would spam otherwise..
What I will try in the future, is something like an admin-mode for admins, so they can toggle between "being admin" and "playing normally". With a command to toggle the notifications, I could implement this, so they only receive them during admin-mode..
Edit (it's getting longer and longer :/ ): Crash after this: 17:39:12 [WARNING] [CCLogger] CCLogger[SQLite] Query failed: near "s": syntax error
-
View User Profile
-
Send Message
Posted Jan 17, 2013@follet2004
I'm sorry, but from all of my testing on several different servers, my code works. I'm not sure what could be causing it.
Could you give me a list of plugins you are running?
-
View User Profile
-
Send Message
Posted Jan 17, 2013@Alrik94
Sorry, But make error of your SQLite. Look on your codes and you have github ?
-
View User Profile
-
Send Message
Posted Jan 17, 2013@follet2004
How is this error coming up? I've tested everything and I'm not coming up with any errors. I'm also running it on the 1.4.7 beta build.
Everything seems to be working fine on my end.
-
View User Profile
-
Send Message
Posted Jan 17, 2013I download the CCLogger 3.2.0.
I have errors here the error list:
http://pastie.org/5710685
Look like your new update of the SQLite make error.
Nope it help you.
-
View User Profile
-
Send Message
Posted Jan 11, 2013@JohOply
Have you tried changing something in the config while the server is on, and then using /ccreload?
From what I've tested it works fine.
-
View User Profile
-
Send Message
Posted Jan 11, 2013-
View User Profile
-
Send Message
Posted Jan 1, 2013@Alrik94
good to see you are still keeping this updated, I have used this for awhile, and have been very happy with the results.
-
View User Profile
-
Send Message
Posted Jan 1, 2013@JohOply
appears to be a bukkit/minecraft problem, probably why it was only seen once.
most likely it was trying to reach a file but the server the file was on couldn't be reached.
-
View User Profile
-
Send Message
Posted Dec 29, 2012@darksoulpk68
This plugin isn't designed to log blocks and I unfortunately don't have the time to implement an entire block logging system.
Sorry :/
-
View User Profile
-
Send Message
Posted Dec 27, 2012Well it looks pretty good, but i'm searching for a plugin that log Blocks, like BigBrother. Could you maybe add that to the plugin ?
-Dark.
-
View User Profile
-
Send Message
Posted Dec 23, 2012@JohOply
Well, thanks for the report! I think that was probably a one time thing.
-
View User Profile
-
Send Message
Posted Dec 23, 2012I don't know, it was appeared one time, never after ^^
-
View User Profile
-
Send Message
Posted Dec 22, 2012@JohOply
How can you recreate this bug?
-
View User Profile
-
Send Message
Posted Dec 22, 2012Hello
I've this bug in 1.4.5 R1.0
-
View User Profile
-
Send Message
Posted Dec 17, 2012@cheapbeats
It records them as commands for now. I could maybe add a separate table and file for private messages that are sent.
-
View User Profile
-
Send Message
Posted Dec 17, 2012Still really loving this plug in, but I have a quick question:
Is there any way to record /tells or /msgs also?
-
View User Profile
-
Send Message
Posted Dec 16, 2012I'm working adding SQLite support for the plugin. It makes it much easier to implement the statistics portion of the plugin and in-game searching commands.