I had to write application with ability to do following things:
- correct setuid(golang has issues with setuid cause of gorotines)
- graceful restart not to make reopen of socket ports
- normal logging support to different log files
- human readable configuration files support.
As I’ve understood that task is typical I’ve separated code to package and published to GitHub.
- HJSON configuration files
- pidfile support
- log file rotation support via SIGHUP signal
- lock file support via github.com/theckman/go-flock
- graceful restart on SIGUSR1 signal when you need upgrade app
- support to prod, dev and test environments in configuration file