slog is a simple logging framework for Common Lisp based on the observation that conditions can represent log events.
slog is based on an two observations about the Common Lisp condition system:
- conditions do not have to represent errors, or warnings, but can just be a way of a program saying ‘look, something interesting happened’;
- handlers can decline to handle a condition, and in particular handlers are invoked before the stack is unwound.
Well, saying ‘look, something interesting happened’ is really quite similar to what logging systems do, and
slog is built on this idea.
slog is the simple logging system: it provides a framework on which logging can be built but does not itself provide a vast category of log severities &c. Such a thing could be built on top of
slog, which aims to provide mechanism, not policy.
slog provides a couple of conditions representing log entries, which are designed to be subclassed in real life. Log entries are created using a
slog function (this is why
slog is called
log is already taken) which simply signals an appropriate condition. Handlers are set up by a
logging form (this should really be called
slogging but it is not), which associates conditions with handlers. There is fairly flexible file handling for logging to files, and in particular you can refer to file names which all get associated with the approprate stream, streams get closed automagically (and you can manually close them, when they will be reopened if need be), and the underlying mechanism for writing entries is exposed by a
slog-to generic function which could be extended. Log entry formats can be controlled in various ways.
slog tries to associate log entries with ‘precision time’, which is CL’s universal time expanded to the precision of a millisecond, or of internal time if it is less precise than a millisecond. Setting this up means that
slog takes a second or so to load.
slog is a framework: it has no dealings with log severities, catagories, or anything like that. All that is meant to be provided on top of what