wsargent | 3 years ago | on: Discussion: structured, leveled logging
wsargent's comments
wsargent | 3 years ago | on: Discussion: structured, leveled logging
wsargent | 3 years ago | on: Discussion: structured, leveled logging
However, if you don't have context, then the log entry is the atomic unit -- metrics are log entries with numbers that can be aggregated, spans are log entries with a trace id and a parent span, and "events" in Honeycomb terminology are logs with attributes covering an entire business operation / HTTP request.
wsargent | 3 years ago | on: Discussion: structured, leveled logging
wsargent | 4 years ago | on: Show HN: Echopraxia, a better Java Logging API
https://github.com/tersesystems/echopraxia/blob/main/BENCHMA...
wsargent | 4 years ago | on: Show HN: Echopraxia, a better Java Logging API
https://tersesystems.github.io/blindsight/performance/benchm...
wsargent | 4 years ago | on: Ask HN: 90s programmers, what did you expect the future of tech to look like?
Specifically, I thought languages would be designed around debugging use cases. The fact that we are still using debuggers and loggers and printlns to debug blows my mind.
wsargent | 5 years ago | on: Why I Built Litestream
[1]: https://tersesystems.com/blog/2020/11/26/queryable-logging-w...
wsargent | 5 years ago | on: Queryable Logging with Blacklite
So that's the sales pitch. Now let's do the fun question – how and why did it get here?
I started off this blog post by writing out the requirements for a forensic logger as if I had total knowledge of what the goal was. But that's not what happened. The real story is messy, discovering the requirements piecemeal, and involves lots of backtracking over several months. I think it's more interesting and human to talk about.
wsargent | 5 years ago | on: Show HN: Concise Encoding – a friendly data format for human and machine
wsargent | 5 years ago | on: Good Logging
wsargent | 5 years ago | on: Good Logging
wsargent | 5 years ago | on: Good Logging
https://tersesystems.com/blog/2019/10/05/diagnostic-logging-...
wsargent | 5 years ago | on: Good Logging
wsargent | 5 years ago | on: Good Logging
[1] https://tersesystems.com/blog/2019/10/05/diagnostic-logging-...
wsargent | 5 years ago | on: Good Logging
[1] https://tersesystems.com/blog/2019/07/22/targeted-diagnostic...
wsargent | 5 years ago | on: Good Logging
I have something for that. [1]
[1] https://tersesystems.github.io/blindsight/usage/conditional....
wsargent | 5 years ago | on: Good Logging
Spoiler -- it totally can. Kirk Pepperdine talks about logging as a memory allocation bottleneck [1]
So I gave my usual logging rant at a workshop that I gave. I was in the Netherlands about a year or so ago. And that night, they went and stripped all the logging out of their transactional monitoring framework that they’re using, which wasn’t getting them the performance they wanted, which is why I was there giving the workshop in the first place. And when they stripped out all their logging, the throughput jumped by a factor of four. And they’re going like, “Oh, so now our performance problem not only went away, we’ve been tuning this thing so long that actually, when they got rid of the real problem, it went much faster than they needed, like twice as fast as what they needed to go.” – The Trouble with Memory
Unfortunately it can be kind of hard to track the memory allocation rate over time, and it's typically not the sort of thing you're focused on. I put together an audio queue that will play the memory allocation rate as a sine wave [2] so I can tell when it's getting to be a problem.
[1] https://www.infoq.com/presentations/jvm-60-memory/
[2] https://tersesystems.com/blog/2020/07/19/listening-to-jvm-me...
wsargent | 5 years ago | on: Good Logging
I generally find it easier to have an explicit "context" object and pass that around in an operation, and then log once that context has been built up. If you're lucky, the logging framework will do that for you.
Bunyan did this the Right Way from the get go, using `log.child`. [2]
[1] https://tersesystems.github.io/blindsight/usage/context.html...
wsargent | 5 years ago | on: Good Logging
https://www.honeycomb.io/pricing?
You can set up with one of their Beelines, or just send JSON to the REST endpoint.
I looked into logging in protobuf when I was seeing if there was a better binary encoding for ring-buffer logging, along the same lines as nanolog:
https://tersesystems.com/blog/2020/11/26/queryable-logging-w...
What I found was that it's typically not the binary encoding vs string encoding that makes a difference. The biggest factors are "is there a predefined schema", "is there a precompiler that will generate code for this schema", and "what is the complexity of the output format". With that in mind, if you are dealing with chaotic semi-structured data, JSON is pretty good, and actually faster than some binary encodings:
https://github.com/eishay/jvm-serializers/wiki/Newer-Results...