- Home page: https://github.com/sharplispers/log4cl
- Previous (abandoned) home page: https://github.com/7max/log4cl
- 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.