Log4CL is high performance extensible
logging library for Common Lisp
Home page: http://github.com/7max/log4cl
Features
- Hierarchical log category architecture (Like in Log4J), with child categories inheriting log level from parent.
- High performance implementation that minimizes consing, with benchmarking showing it faster then log4j in most cases.
- Many lisp specific enchantments, such as (log:debug x y) automatically printing both names and values like so:
CL-USER> (log:info pi)
<INFO> [18:08:23] cl-user () - PI: 3.141592653589793d0
On SBCL and CCL, log category is automatically named after package and block name where function appears, allowing per-function control of logging. Example:
CL-USER> (test.package.one:greetings)
<INFO> [18:11:30] test.package.one naming-examples.lisp (greetings) -
Hi There!
Full Emacs/Slime integration, mouse click on log statement category goes to the source code where log statement appears (SBCL and CCL only), right-clicking on
various parts of log category (such as package, source file, or function name in above example) shows popup menu to change log level for that category.
Buffered and un-buffered stream appenders, console appender, file appender and daily rolling file appender with configurable name are all implemented. Auto-flushing of active appenders by background thread.
Log4J like pattern layout, with many CL specific addition, ie as control of pretty printing.
Easy/abbreviated configuration function for interactive REPL work, with several many pre-defined "sane" pattern layout configurations
Extensive test suite with over 700+ assertions.
Tested on SBCL, CCL, CLISP and LispWorks
A quick-start guide is provided in README.md file