WatchFox
WatchFox
No one can outfox a fox
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.
Links: Downloads | API Info | Changelog | How to use | What it logs | Configuration | Permission nodes | Saving | How it works | Test details | Report a bug | Validation
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.
Important tidbits:
- WatchFox is coded in Java 1.7 and requires a Java 7 JRE / runtime to function.
- WatchFox throttles rollbacks to 1000 blocks per second reduce server lag. If you have power to spare, you change this rate in the configuration. See conf.
Naturally, WatchFox has its own set of unique advantages and disadvantages over other plugins. Some notable ones follow:
+NO NMS CODE Confidently use WatchFox on any 1.4.5R1.0+ server.
+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
+Chest inventory rollbacks
+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 click Downloads here or in the links bar, 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 clicking "Report a bug". Even simple things like errors in the documentation will be systematically fixed.
And don't forget to check out the other links available.
A note about downloads. As the main website for WatchFox is located elsewhere, download links on the wiki pages will direct you to my own website which hosts the jars as well. While I will maintain both the downloads here on BukkitDev and there, only the files here are subject to the quality control the BukkitDev staff impose. As such, you are encouraged to use the downloads provided here.
So the last few updates occurred rapidly enough that the jars never got approved before I deleted them to make way for the next version.
However, unless I find any more bugs that result in WatchFox failing to correctly log or rollback events, 1.1.2 should last for a while.
Compared to 1.0.2, it adds fluid logging and fire spread. A few of the existing loggers were tweaked, and internally, the logger itself was streamlined. The database however had some of the parallelism stripped out to allow fluid flow logging to log sequentially so rollbacks actually work. The speed loss is quite minimal and this should allow for more sophisticated algorithms in the future.
Of course, if you notice anything not acting correctly, I appreciate anything and everything you have to say.
@ryvix
Ugh, you managed to test pretty much everything I thought I could get away with not logging. NO LONGER (Note, I do sincerely appreciate your input, it did show just how necessary that is)
WatchFox 1.1.1 is in the tubes and should effectively handle everything you listed. It'll take a while for BukkitDev to approve it, however, I *cough* do have a repository I cannot officially endorse that does contain the latest builds.
Of course, going over the Changelog is always worthwhile. I was working on some other things as well.
Edit: 1.1.0 is being skipped because fluid flow logging just didn't work right with the old pipeline.
Hello,
Here is my experience. Testing on a dev server I dumped a bunch of lava everywhere on walls and the grass and across a wooden walkway with a fence. Then I dumped a bunch of water down another wall and it made a bunch of stone where the lava was.
Then I tried roll it back by using a WorldEdit selection and did not have too much luck. While it did possibly undo the spots where I placed it and damage to the walkway and fence I don't believe it fixed the problem as there was still lava, water and stone everywhere. Even when I tried rolling back everything. The fence and walkway was still burning (though parts would get fixed when rolling back) and there was still lava and water and stone everywhere.
Seems like it has a lot of potential, nice work =)
@Pixiyo
WatchFox will only log the text of the command executed. So while you'll be able to figure out who enabled it, many of the block-breaks will not be logged.
At the moment, given how young WatchFox is as a public project, there are no immediate plans for adding non-strictly-vanilla events. However, an API is in development.
Nice plugin! But it's not logging worldedit super pickaxe (command: )
@ryvix
Thanks for checking it out. If you have any thoughts / concerns / critiques, I'm more than happy to listen.
This looks very impressive, nice work! Have to give it a try.
WatchFox ^_^
This looks great, I've used LogBlock, HawkEye, BigBrother, and CoreProtect, but this is definitely a great alternative due to how fast it is.