Hi cafe,
Let me bring to your attention this package developed by me and Dmitry Astapov:
http://hackage.haskell.org/package/greg-client
It is a Haskell binding to the "greg" logger (
http://code.google.com/p/greg , http://github.com/jkff/greg - "global
registrator" ).
You can read the project's description and motivation at the homepage
http://code.google.com/p/greg , but here are some highlights:
* It's designed for debugging lattency bottlenecks or synchronization
issues in distributed systems. I've been using it on small and large
clusters, Dmitry has been using it for debugging haskell-mpi if I'm
correct (Dmitry, can you elaborate a bit?).
* It's a client/server logger - you launch a server and clients log
messages to it
* It provides a high-precision global time axis by computing clock
offset between server and each client (this allows to register events
with their occurence timestamps, not arrival-to-server timestamps)
* It's very fast (I squeezed 400,000 messages/sec = 20Mb/s out of the
Java binding)
* It can handle a huge number of clients (a much less scalable
implementation was tested on a 2000-core cluster)
* It's robust to intermittent deaths of clients, server or the link
between them
* It's very lightweight - no persistence infrastructure, piles of
config files or whatever - just send him the messages, it will align
them on the global axis and log them to console
I found it especially useful in conjunction with the log visualization
tools described here
http://slideshare.net/jkff/two-visualization-tools .
P.S. How to use it (while hackage hasn't yet rebuilt the docs):
import System.Log.Greg
main = withGregDo defaultConfiguration $ do ....
...logMessage "Something happened"...
--
Eugene Kirpichov
Senior Software Engineer,
Grid Dynamics http://www.griddynamics.com/