Unified logger that writes to a log file. Could eventually also write to a redis queue, mongo collection, and hoptoad.
Unilogger is composed at runtime of a Logger instance which delegates log messages to a set of emitters. The emitters do the actual work of sending log messages to stderr, a file, redis, or elsewhere.
Unilogger will initialize itself from a logger.yml or logger.yml.erb configuration file, if present.
The configuration file should contain an entry named after the current environment, e.g. “development”, “test”, “production”, etc.
Logger options
level: overall level; messages of severity less than this will not be emitted regardless of the level of the emitter. emitters: a list of emitters.
Standard (log file) emitter
kind: LogFileEmitter logdev: “stderr”, “stdout”, or a filename shift_age: “daily”, “weekly” or “monthly” to rotate based on the calendar
if rotating based on file size, number of files to keep
default 7
shift_size: a file size, to rotate based on the file size
default 1048576
Redis emitter
kind: RedisEmitter
Example logger.yml
stderr: &stderr
logger:
logdev: stderr
standard: &standard
logger:
logdev: "<%= ENV["RACK_ENV"] || "development" %>.log"
shift_age: daily
development:
level: 0
emitters: [ *standard ]
test:
level: 1
emitters: [ *stderr ]