I saw an interesting article about logging  today on reddit, and it struck a nerve with me, specifically how most text logs are not designed for easy parsing.  (I don't agree with the second point, though -- sometimes logging is  tracing, or perhaps more accurately, sometimes tracing is logging.) We had a lot  of log and trace data at Mozy, several GB per day.  A traditional parsing approach would have been tedious and prone to regressions when the messages generated by the server changed.  So Paul Cannon, a frustrated lisp programmer , designed a system where the log API looked something like this: self.log('command_reply(%r, %r)' % (command, arg)) Then the log processor would define the vocabulary ( command_reply , etc.) and, instead of parsing the log messages, eval  them!   This is an approach that wouldn't have occurred to me, nor would I have thought of using partial function application  to simplify passing state (from the log processor and/or previous log entrie...