Logfmt for Elixir



A simple logfmt decoder for elixir that uses binary scanning for high performance.
Brought to you by Timber.io. This library is used to parse millions of log
lines every day.
Installation
# mix.exs
def deps do
[{:timber_logfmt, "~> 1.0"}]
end
Usage
Using = as the delimiter
```elixir
Logfmt.parse("key1=value1 key2=\"This is a quoted value\" key3=1")
=> {:ok, [key1: "value1", key2: "This is a quoted value", key3: "1"]}
```
Using : as the delimiter
```elixir
Logfmt.parse("key1:value1 key2:\"This is a quoted value\" key3:1 key4")
=> {:ok, [key1: "value1", key2: "This is a quoted value", key3: "1", key4=true]}
```
## Notable logfmt deviations
We deviated slightly from the logfmt spec:
1. We accept `:` as a delimited in addition to `=`
2. We do not cast or coerce values. All values will parsed into a string. This is because logfmt does not have any syntax for types. Ex: `key:true` could evaluate to `true` or `"true"`.
3. Values are decoded into a `Keyword.t` to preserve the order.
4. Valueless keywords will error. In the context of logging, this makes virtually any string valid, which is not ideal.
## Shoutout
If you appreciate this library, head over to [timber.io](https://timber.io).
## License
Released into the public domain (see `UNLICENSE`).
Optionally available under the ISC License (see `LICENSE`),
meant especially for jurisdictions that do not recognize public domain works.