You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Signed-off-by: Christine Dodrill <me@christine.website> |
2 years ago | |
---|---|---|
.within | 2 years ago | |
rockspec | 2 years ago | |
spec | 2 years ago | |
src | 4 years ago | |
.drone.yml | 3 years ago | |
.envrc | 2 years ago | |
.gitignore | 2 years ago | |
LICENSE | 4 years ago | |
README.md | 4 years ago | |
default.nix | 2 years ago | |
shell.nix | 2 years ago | |
test.sh | 2 years ago |
README.md
ln: The Natural Logger for Lua
This is a clone of ln for Lua. ln works by using key->value pairs to create structured logging output. By default, this outputs logs formatted similar to logfmt.
Example:
local ln = require "ln"
ln.log {foo = "bar"}
-- time="2019-12-25T13:24:00" foo=bar
It also supports multiple tables:
local ln = require "ln"
ln.log({foo = "bar"}, {needs_space = "a string value with spaces"})
-- time="2019-12-25T13:24:00" foo=bar needs_space="a string value with spaces"
And logging errors:
local ln = require "ln"
local result, err = thing_that_could_fail()
if err ~= nil then
ln.err(err, {tried = "thing_that_could_fail()"})
end
-- time="2019-12-25T13:27:32" err="vibe check failed" tried=thing_that_could_fail()
And outputting logs as JSON:
local ln = require "ln"
ln.default_logger.formatter = ln.JSONFormatter:new()
ln.log {foo = "bar"}
-- {"foo":"bar","time":"2019-12-25T13:27:32"}
Or creating your own logger instance:
local ln = require "ln"
local lgr = ln.Logger:new()
lgr:log {foo = "bar"}
-- time="2019-12-25T13:27:32" foo=bar
Or custom filters
local lgr = ln.Logger:new {
filters = {
function(message)
if string.find(message, "debug=true") and os.getenv("DEBUG") ~= "YES" then
return false
end
end,
print,
}
}
lgr:log {debug = "true", line = "PRIVMSG #foo :bar", dir = "out"}
This will make the log line only show up when DEBUG
is set to "YES"
.