Log4CL is high performance extensible logging library for Common Lisp

Home page: http://github.com/7max/log4cl


  • 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