Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
For configs, given you haven't mentioned what sort of configs - I'd generally recommend viper.
I haven't needed to use anything outside the standard library for testing - the only exception to this being testify, which I use for the easy assert.Equal and other wrappers most of the time.
How do I handle configs? In our Node APIs we use this config package, which allows us to override default configs on a per-environment basis. What's the standard way of doing this in Go?
For #2 I use zerolog, which logs as JSON lines, but gives you considerable control over the output. The standard package is fine if you just want regular ol' text logs, however
I use zap for logging. With some planning, you can easily switch between logging to JSON or Plaintext (the former is faster but less readable). Though, that comes with a learning curve - you'll have to spend some time reading the docs before you can actually start using zap in production. On the other hand, logrus is pretty simple to use, but relatively quite slow (this might not matter for personal projects, but probably will in production). And of course, there's the standard package as well! Take your pick ;)
I use zap for logging. With some planning, you can easily switch between logging to JSON or Plaintext (the former is faster but less readable). Though, that comes with a learning curve - you'll have to spend some time reading the docs before you can actually start using zap in production. On the other hand, logrus is pretty simple to use, but relatively quite slow (this might not matter for personal projects, but probably will in production). And of course, there's the standard package as well! Take your pick ;)