We log most player related events provided by the Bukkit API. For every occurrence, we record the event name, the current time and the id of the involved player. Some events are annotated with a block position, material name or some other relevant attributes like inventory content. The logging of chat texts can be disabled. We never log command arguments, since they might contain passwords.
In addition to the event logs, descriptive information about the server is sent to the logging server when the plugin is loaded. Epilog also sends a heartbeat package every 5 minutes. The heartbeat is used to check if a server is running and which versions of our plugins are installed. All data is sent over a secure connection.
We put together some files with example log content for examination. It also includes the java source file responsible for collecting all the data and a list of all events we capture. Follow the instructions inside jsonDummy.php to record the output of Epilog yourself.
The amount of data that is logged might seem excessive, but it leaves more space for creativity. It's very hard to know what data is important before evaluating it statistically. For example, who would have predicted that PlayerVelocityEvent is a good indicator to detect if a player is fighting?
Average gameplay generates about 10 events per second. About 95% of those events are player movements, since walking generates 20 events per second. The events are sent to our logging server every 10 seconds. We considered skipping some move event but thanks to data compression the plugin can handle all events with minimal performance impact. Logging more move events increases the accuracy of our analysis.