The issue I usually have with these logging libraries is that they often don't handle structured data well, which is something that's commonly needed in a logging library.
For example, it's fine for log entries to be a string when logging to console or a text file, but if you add a sink that logs to a database, service (Sentry, Loki, NewRelic, whatever), or JSON file, you'll generally want some sort of structured data. At the minimum, you'd want the format string (e.g. "Unable to find {id}") and the variables (e.g. {"id":123}) to be stored separately, so that you can get aggregated counts for how often each error is being thrown regardless of the variables.
3 Comments
dan@upvote.au · 1 pts · 2y
The issue I usually have with these logging libraries is that they often don't handle structured data well, which is something that's commonly needed in a logging library.
For example, it's fine for log entries to be a string when logging to console or a text file, but if you add a sink that logs to a database, service (Sentry, Loki, NewRelic, whatever), or JSON file, you'll generally want some sort of structured data. At the minimum, you'd want the format string (e.g.
"Unable to find {id}") and the variables (e.g.{"id":123}) to be stored separately, so that you can get aggregated counts for how often each error is being thrown regardless of the variables.hongminhee@lemmy.ml · 2 pts · 2y
LogTape author here.
LogTape also supports structured logging. Structured values are kept in
LogRecord.properties. Please see how to use the JSON formatter.dan@upvote.au · 2 pts · 2y
Thanks for the details!! Sorry I didn't notice that.