Hot Reloading for Logs

An example server that can live-reload logging configuration. The server itself just logs requests and manages its own config.

The logging configuration can be updated and reloaded at will. If the /-/reload endpoint detects that the configuration has not changed, no action will be taken (indicated in the logs).




The server can be configured via flags on the command-line.


Available CLI Flags

Flag Type Default Description
-bind-address String localhost The address at which to listen for requests.
-config-file String config.yaml The path to the config file to use.
-port Int 8080 The port on which to listen for connections.


# Start the server on port 9090 using a config file called 'example.yaml'
$ ./log-reloading -port 9090 -config-file=example.yaml
INFO[0000] Server is starting at localhost:9090


Logging configuration is in YAML.

  level: info  # Any of [debug, info, warn, error, fatal, panic]
  colors: true # true or false
  format: text # text or json


Endpoints Method Description
/-/config GET View the current configuration.
/-/reload POST Reload the configuration from disk.

Build & Execute

$ make run
Removing log-reloading
INFO[0000] Server is starting at localhost:8080
INFO[0008] GET /-/config
INFO[0013] POST /-/reload
INFO[0013] Hashes match. Skipping reload.