On Fri, Jun 14, 2013 at 1:41 AM, Jamu Kakar email@example.com wrote:
On Thu, Jun 13, 2013 at 6:41 PM, Facundo Batista firstname.lastname@example.org wrote:
Mmm... which is the problem with doing:
log.msg("Foo happened. Relevant information includes: " "bar=%s baz=%s boz=%s", bar, baz, boz)
Is way more readable, and in the practice the code will just need to do something like:
The example above could be written in a logfmt-compatible way as:
log.msg("message=Foo happened bar=%s baz=%s boz=%s", bar, baz, boz)
This is as readable as what you have above while being a touch easier to parse. The main point that logs are data and should emitted in a way that makes consuming them easy is a good one regardless of the format you choose. I do wonder if logfmt is unnecessary and if simply dumping JSON objects would be just as good... logfmt is slightly prettier but the JSON approach has the advantage of having a parser available in basically every language anyone would ever care about.
I think both of these should be avoided because they require the user to specify string interpolation themselves. I'd prefer to avoid that entirely, by default.
log.msg("Foo happened**", bar=bar, baz=baz, boz=boz)
This is better because:
1. it keeps the data structured 2. it is a lot less typing
** I would prefer this part to be "foo", but I'll keep these discussions separate :)