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.notify get 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 token
  • GET /api/logs - Query logs with filters
  • GET /api/logs/player/{name} - Logs for one player
  • GET /api/logs/search?q=term - Search log content
  • GET /api/stats - Statistics

JWT auth with rate limiting.


Requirements

  • Paper 1.21+ or Folia
  • Java 21+

Commands

  • /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)

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

  1. Drop JAR in plugins/
  2. Restart server
  3. Edit plugins/CCLogger/config.yml
  4. /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

Links


Comments

  • To post a comment, please or register a new account.
Posts Quoted:
Reply
Clear All Quotes

About This Project

Categories

Members

Recent Files