Log4CL is high performance extensible logging library for Common Lisp
Home page: https://github.com/sharplispers/log4cl
Previous (abandoned) home page: https://github.com/7max/log4cl
Status Library is maintained by sharplispers at https://github.com/sharplispers/log4cl. Features
Modeled after Log4J with the familiar concepts such as log categories, appenders and layouts
No dependencies other then Bordeaux-threads
High performance implementation that minimizes consing, with benchmarking showing it faster then log4j in most cases.
Buffered and un-buffered stream appenders, console appender, file appender and daily rolling file appender with configurable name are all implemented. Auto-flushing of buffered appenders by background thread.
Automatic naming of log categories, so that a log statement that does
not specifically name a logger, appearing in a function SOME-PACKAGE:FOO inside of a local flet function BAR, will automatically log into the category SOME-PACKAGE:FOO:BAR
Appenders, layouts, and most everything else is implemented via CLOS,
and can be easily changed/extended/customized. Automatic log category naming
is also implemented via CLOS and can be specialized per-package, so packages
can implement their own custom naming options.
Easy/abbreviated configuration function for interactive REPL work, with several pre-defined "sane" configurations, as well as traditional log4j like configuration via properties file, with option to auto-reload on changes.
Pattern layout, with several enhancements, such as options to modify
separator and case (including invert) of log categories, for example one can print log category FOO:BAR:BAZ as foo--bar--baz
Multiple logging hierarchies support, with each having an completely
independent configuration with regards to log levels and appenders, suitable for example for virtual hosts.
Extensive test suite with over 400+ assertions.
Tested on SBCL, CCL, CLISP and LispWorks
A quick-start guide is provided in README.md file