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.
Chat - Messages with timestamp, world, and coordinates
Commands - All commands (blacklist supported for /login, /register, etc.)
Connections - Join, quit, kick events
Output options:
%date, %name, %content, %world, %x, %y, %zFile - 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.
IP logging modes for GDPR compliance:
Commands can be blacklisted with regex patterns. Players with cclogger.exempt permission are excluded from logging.
Monitor keywords and commands in real-time:
cclogger.notify get in-game alertsCCLogger includes a modern React-based web dashboard (disabled by default):
Dashboard
Live Timeline
Log Browser
Player Profiles
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 - StatisticsJWT auth with rate limiting.
/cclogger - Shows help/cclogger reload - Reload config (requires cclogger.reload)/cclogger count <word> [player] - Count word occurrences (requires cclogger.statistics)/cclogger clear - Archive and clear logs (requires cclogger.admin)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)plugins/plugins/CCLogger/config.yml/cclogger reloadDefault config works immediately. Change storage.type if you want something other than SQLite.
storage:
type: sqlite # file, sqlite, mysql, mongodb, redis
privacy:
ip-logging: disabled
notifications:
enabled: true
chat-keywords:
- "hack"
- "cheat"
web:
enabled: false
port: 8080