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 14, 2016I'm alive!
I'm going to make an effort to revive this plugin. There are some things I need to know, first:
Until then, I'm going to look into fully supporting Spigot (if it isn't already) because that is what the majority of CCLogger users seem to use.
-
View User Profile
-
Send Message
Posted Mar 12, 2016Sad to see this good plugin not being updated anymore :c have used it as long as it exists. and gave allot of good support during ban appeals or catch the rotten apples from a good community. RIP CClogger?
-
View User Profile
-
Send Message
Posted Mar 2, 2016broken in 1.9
02.03 23:04:31 [Server] INFO ... 16 more 02.03 23:04:31 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at java.lang.reflect.Method.invoke(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at me.alrik94.plugins.cclogger.CommandLogger.onPlayerCommandPreprocess(CommandLogger.java:60) [?:?] 02.03 23:04:31 [Server] INFO at me.alrik94.plugins.cclogger.CommandLogger.processInformation(CommandLogger.java:91) [?:?] 02.03 23:04:31 [Server] INFO at me.alrik94.plugins.cclogger.Notifier.notifyPlayer(Notifier.java:15) [?:?] 02.03 23:04:31 [Server] INFO Caused by: java.lang.NoSuchMethodError: org.bukkit.Server.getOnlinePlayers()[Lorg/bukkit/entity/Player; 02.03 23:04:31 [Server] INFO at java.lang.Thread.run(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:721) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_60] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1137) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at net.minecraft.server.v1_9_R1.PlayerConnection.handleCommand(PlayerConnection.java:1294) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) [19.jar:git-Spigot-1a196e1-76c0425] 02.03 23:04:31 [Server] INFO org.bukkit.event.EventException 02.03 23:04:31 [Server] ERROR Could not pass event PlayerCommandPreprocessEvent to CCLogger v3.3.3
-
View User Profile
-
Send Message
Posted Jan 19, 2016Also - our server time is like 5 hours later than real time - option to adjust the timestamp ?
-
View User Profile
-
Send Message
Posted May 12, 2015People place signs like: join mc.assnet.com !! Is it possible for staff to get informed of what these little trolls are posting using signs ?? A sign logging function ? Signs are ultra destructive... Could be skipped for blank signs since players use those to build contraptions but we discover more and more signs bypassing cclogger.
-
View User Profile
-
Send Message
Posted Feb 2, 2015@Alrik94
i noticed i only need sqlibrary if i decide to use a database
is it fine if i don't use a database?
if i do use a database, what's the easiest quickest most convenient etc way/s to check the logs
also, what do i put for the command blacklist if i want it empty? do i just put [] or {} after blacklist: ?
-
View User Profile
-
Send Message
Posted Jan 31, 2015@ChillerKraft
Just add the SQLibrary plugin in your plugins folder and you'll be good.
-
View User Profile
-
Send Message
Posted Jan 31, 2015can i have assistance on setting up this plugin? i haven't tried yet i will soon once i backup my server but, mainly i need to know if i need to setup anything with SQLibrary or do i just add it to the server and thats it
ty
-
View User Profile
-
Send Message
Posted Jan 20, 2015@Alrik94
Plugin works perfectly fine for 1.8 any update would just be a feature :)
Great plugin :) Thank you.
-
View User Profile
-
Send Message
Posted Jan 8, 2015Alrik94 said one of the groups cclogger.exempt right that they do not benefit from logging. However, the files appear in the folder players. You can do so as not to set up files?
-
View User Profile
-
Send Message
Posted Dec 30, 2014playerLogin: true
How about logouts ? :)) When someone is unruly, I can't really see if they are making player leave... I can tell when a new player logs in... and I see the bad chatter throw profanities... but there's no log event of players logging out because they can't deal with the profanities. It would be nice to have a clearer view to see if someones smutt is affecting the server population numbers.
-
View User Profile
-
Send Message
Posted Nov 29, 2014@Alrik94
Hi Alrik94,
With Spigot for Minecraft 1.8 out, can you provide a time estimate for your next CClogger version? :)
-
View User Profile
-
Send Message
Posted Oct 20, 2014BTW, I'm not dead. College is hard, guys. Sorry for the lack of updates. I've decided to make this project a priority over my other non-minecraft projects.
-
View User Profile
-
Send Message
Posted Oct 14, 2014@Alrik94
Also looking every much forward to the web front-end. Do you have an ETA on it? :)
-
View User Profile
-
Send Message
Posted Aug 29, 2014@Alrik94
Nice, Can't wait to use it!!
-
View User Profile
-
Send Message
Posted Jun 12, 2014Hey Alrik! Where can I get a Dev Build? Thanks!
-
View User Profile
-
Send Message
Posted Apr 24, 2014UPDATE 4/24/14:
I've been working hard on the newest CCLogger version (4.0.0). This one comes complete with a web front-end for the logging system. Here is a screenshot (the "<player> moved" is for debugging purposes only):
-
View User Profile
-
Send Message
Posted Feb 12, 2014@Alrik94
Do you also add the logggin of player deaths with the new update? if so Can you add the <player1> Killed <player2> And <player 2> died because of <player1> or something so you can go torugh someone log and see if they spawned killed someone.
-
View User Profile
-
Send Message
Posted Feb 5, 2014@Alrik94
Awesome! Cant wait :3
-
View User Profile
-
Send Message
Posted Feb 4, 2014@arriej
Great idea! I've ran a large-scale server before and I know the importance of this.
I'm working on a full rewrite of this plugin, for optimization purposes and convenience of updating purposes. This feature is going to be in there for sure.