Inactive [SEC/ADMN/EDIT/INFO] WatchFox v2.0.0 - An extremely fast logging plugin, no MySQL [1.4.5R-1.0]

Discussion in 'Inactive/Unsupported Plugins' started by super_tycoon, Oct 10, 2012.

  1. Offline

    super_tycoon

    WatchFox
    No one can outfox a fox


    NOTE: THIS THREAD IS ABANDONED

    The plugin is alive and well, but you should go the page at BukkitDev instead.

    -- A full selection of links and downloads is available at BukkitDev -- http://dev.bukkit.org/server-mods/watchfox/ --

    WatchFox is an extremely fast and efficient logging plugin that uses its own custom, self-hosted database to achieve the fastest speeds of any logging plugin yet. Just drop the jar in the plugins folder and you'll be logging at multi-thousand actions per second.

    *There has been some healthy skepticism over a completely custom-rolled database. While I cannot promise you the same guarantees an established, mature database provider like MySQL does, I have validated WatchFox to log 1 million events without a single failure in any of its systems. The details of this test, including some source code, is available here.

    WatchFox was developed in my quest for a superior logging plugin. Since none of the ones currently available appealed to me, I wrote my own. (Of course, this also means I wrote all the documentation myself. If it's a little thick, don't worry, the defaults are perfectly fine, there's just room for tweaking.)

    A significant consideration was that most logging plugins required a MySQL database. While many hosts offer such a server now, in my experience, they were unreliable and over-provisioned. Many could not keep up with even a modest server. Additionally, running MySQL on a self-hosted server adds a large amount of overhead, both to the server and the admin. WatchFox avoids all of this by running the database internally to the plugin, with intelligent caching and minimal I/O.

    There are also other logging solutions that don't use a MySQL server. However, WatchFox vastly outperforms them. In a self-conducted test (I encourage you to test for yourself if you don't believe me), WatchFox was many times faster, and uses significantly less storage space to store data.

    Naturally, WatchFox has its own set of unique advantages and disadvantages over other plugins. Some notable ones follow:

    +No need for a MySQL server
    +Fastest Bukkit logger available
    +Full search syntax, not restricted to using tools
    +Full WorldEdit selection usage support
    +Powerful API for other plugins
    +Easier to setup than alternatives
    +Rollback preview support
    +Ability to keep database in sync with Minecraft world (see saving for details)
    +Unique anti-overwrite technology (see below)
    +Shift-click to add blocks to your search!
    +Ability to sort your search results at a whim
    +Session sharing for easy collaboration
    +100% active development, long term support

    -Possibility of data loss if server crashes
    -Additional RAM must be used for the database (not to be used if you're running out of RAM as-is now!)
    -Data must be viewed with the in-game browser

    In having a unique database, WatchFox also has a similarly unique anti-overwrite system. Basically, when performing a rollback, a particular event will only be undone if the block hasn't been changed by a non-searched party. For example, your standard plugin will check to make sure that block is as it was after the event before rolling back (that is, if a block was broken, it will only rollback if the block is still Air). However, WatchFox has the unique ability to check for any post-event action. For example, if a malicious player spams dirt blocks around someone's house, and the victim later clears it all away, only to then put dirt back selectively, the dirt that the victim placed will not be rolledback. It is considered superseded. No longer will performing a rollback reverse the victim's own work!

    If you want to try the most advanced and fastest logging plugin available for yourself, just download it from BukkitDev, drop it into your plugins folder and /reload. It has no dependencies, although it does support using WorldEdit.

    Want to make WatchFox even more awesome? Report any bugs you find or request useful new features by using the "Report a bug" link. Even simple things like errors in the documentation will be systematically fixed.

    And don't forget to check out the other links available.

    Links:
    Downloads | API Info | Changelog | How to use | What it logs | Configuration | Permissions nodes | Saving | How it works | Test details | Report a bug | Validation

    Recent changes:

    V2.0.0
    • BREAKS COMPATIBILITY WITH VERSION 1.X DATABASES.
    • New command, /wf searchn, which allows for limited search length to N most recent events.
    • Full API v1.1 support.
    • Rollback engine was modified to selectively apply physics updates to rolled back blocks. At the moment, powered rail, levers, redstone torches, repeaters, redstone lamps, and beacons are force updated.
    • The metrics thread could hang a WatchFox emergency shutdown. The cause seems to be a bug (not investigated in any meaningful manner) in the Bukkit scheduler; a timeout was added.
    V1.2.2
    • Added support for falling blocks. Block changes are logged as block_form. They have a special description in the event log that says "...formed by a falling block". Damage caused by falling blocks is also support. Rollback supported for block_forms.
    • Added support for piston block interactions. Piston events: piston_extend and piston_retract were redefined to refer to the piston base state.
      Blocks moving from pistons is logged under block_push. Will only be logged in the event extend and/or retract is logged.
      Attached blocks breakings is logged under block_break. Will only be logged if block movement was logged.
      Rollbacks supported on all piston events.
    • Mob block interactions are now logged under block_form. They have a special description in the event log that says "...formed by a mob interaction".
    • Liquid flowing is now its own event type, liquid_flow. (formerly, block_form) FULL backwards compatibility with old data is maintained.
    • Farm/grass fading to dirt is logged as a block_fade event.
    • Vine spread is now logged as a block_form event.
    • Now distinguishes between normal skeletons and wither skeletons (also fixed a typo in the original spelling of 'skeleton').
    V1.2.1
    • Added support for item frames in entity_break, entity_place, and player_interact listeners with rotation and item data logging. No rollback support.
    • Cleaned up some code, of note, hanging threads on shutdown be impossible now (hah!), some bukkit interaction code should be snappier as well
    • Added MCStats metrics reporting, will default to 'on', see conf for more info
    • Added auto-update support, will default to 'on', see conf for more info
    • A series of container transactions are now auto-generated when a container is broken (now matches sign-breaking behavior)
    • Item enchantment data now should be maintained properly now
    • Monster spawner mob type is now recorded and set during rollbacks
    • Fixed some block orientations being incorrect after rollback
    • Added rolling back container transactions! Note that this does _not_ affect player's inventories. Items are created and destroyed to satisfy the container's inventory only.
    • Added a new command /wf chest, used to handle oddities/overflows when rolling back chest (and other container) inventories
    • Added a new command /wf stats, outputs some interesting info regarding DB internals
    • Tweaked the output of the paginated search results (from /wf NUM)
    • Tweaked the output of /wf lookup
     

Share This Page