* Define project as a Go module and update dependency versions
Signed-off-by: Nikos Filippakis <me@nfil.dev>
* Update docs, configs and dockerfile to use latest Go version
Signed-off-by: Nikos Filippakis <me@nfil.dev>
* Add postgres database driver
Signed-off-by: Nikos Filippakis <me@nfil.dev>
By default logrus uses these keys. If we also define one, logrus detects this
and then works around by adding 'fields.whatever' as the key name. However,
in the process of adding the key to the `Fields` it causes a race condition
which can crash the process with concurrent map r/w errors.
The example from the docs was very clearly with spaces after hours and minutes:
```
"committed_at": "2011-11-11T11: 11: 11Z",
```
But in fact those spaces do not exist in the wild. Great.
We can't just use a public field because the caller may clobber it. If they
do clobber it, we've then lost the ability to set it back to what it was because
we don't store another copy anywhere. This patch fixes it by keeping a private
ref and always clobbering on Register().
This is horrible. We need to separate internal-storage and external-fields
better.