exLog

4.3k Downloads

exLog is a logging plugin for Bukkit, and the official successor to the somewhat popular Log plugin. So what sets it apart from other plugins, like LogBlock and LogEx? It's modular:

We've all had the annoying experience of downloading a plugin and then having to dig through a huge configuration file to enable only the one or two out of 100 features that we actually want. exLog is different. It is a logging platform which, on its own, provides no visible functionality. The functionality of logging sources and data providers is provided by separate modules, in a manner similar to Bukkit and its plugin architecture.

In this way, exLog can remain as lightweight as required without sacrificing functionality for those who desire it.

DO NOT USE THE DOWNLOAD BUTTON ON THE MAIN PAGE

It may not link to the correct file! Follow the instructions in the ‘Basic Installation’ section instead!

Available Modules

  • exLog core
  • JSON data provider
  • SQLite data provider
  • basic block logging source (block placement and destruction, bucket use)

Planned Modules

  • binary data provider
  • redstone logging source (door/button/lever operation)
  • mob logging source (creeper/enderman/wither block interaction)
  • WorldEdit logging source
  • chest logging source
  • command logging source

There will, in addition, be a documented API available for anyone who wishes to implement their own logging source or data provider using the exLog framework.

Basic Installation

  • Download the latest ‘Core’, ‘JSON’ and ‘Block Logging’ jar files from the Files page. Make sure the ‘Data API Level’s and ‘Block API Level’s match up.
    • Recommended: Core 0.3.0, JSON 0.3.0/SQLite 0.3.0, Block Logging 0.3.0.
    • Older: Core 0.2.0, JSON 0.2.0/SQLite 0.2.0, Block Logging 0.1.0.
  • Put all three jar files in the plugins directory of your Bukkit installation.
  • That's it! The plugin should now be preconfigured to log block placements and destructions to the database.json file in your Bukkit directory.
  • Lookup history for a block by right-clicking it with a stick or with a bone.
  • Permission details can be found in the plugin.yml.

Advanced Installation

  • You can install additional modules by downloading and copying the appropriate jar files to the plugins directory of your Bukkit installation.
  • These modules will need to be activated in the plugins/ExLog/config.yml file.
  • dataProvider takes a single String value, which is the internal plugin name of the Data Provider.
  • loggingSources takes a list of String values, which are the internal plugin names of the Logging Sources.
  • dateFormat takes a single String value, which is the format of dates used for input and output.

Advanced Usage

  • Access advanced exLog commands using ‘/exlog [command] [args]’ or equivalently, ‘/el [command] [args]’.
  • Valid commands are ‘help’, ‘info’, ‘test’, ‘query’ and ‘queryu’. The only one you need to know about is query/u.
  • query accepts a JSON object as a parameter. Valid keys are ’player’ and ‘origin’ (accepting Strings), ‘x’, ‘y’, ‘z’ and ‘dimension’ (accepting ints), ‘date’ (accepting a long), ‘dateMin’ and ‘dateMax’ (accepting Strings, formatted according to the dateFormat in config.yml), and ‘otherData’ (accepting a JSON object). No keys are required for the command to be successful.
  • queryu is the same, but shows UUIDs alongside player names.
    • Returns all entries relating to me: /el query {"player":"RunasSudo"}
    • Returns all over-world block placements: /el query {"dimension":0,"origin":"ExLogBlockLoggingSource","otherData":{"type":"1"}}

Rollback and Deletion

  • Rolling back is still in beta. I am not responsible for any destruction to your worlds or databases as a result of using rollback. I would like to hear about it, though!
  • To rollback, first execute ‘/exlog rollback [query]’ or ‘/el rb [query]’.
  • The plugin will list all the events to be rolled back according to the query.
  • Check the list and, if satisfied, execute ‘/exlog rollback y [query]’ or ‘/el rb y [query]’.
  • To delete entries (without rolling back, useful when starting a new world), use the same method as for rolling back, but use ‘rm’/‘remove’ instead of ‘rb’/‘rollback’.

Creating Data Providers and Logging Sources

  • Data Providers and Logging Sources can be implemented by subclassing ExLogDataProvider and ExLogLoggingSource, respectively.
  • Refer to existing implementations for more information.

Links

In depth progress can be found on my GitHub page. Please discuss the project on the BukkitDev forums.