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).

Demo

log-reload-fps

Configuration

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

Server

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.

Example

# 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

Logging configuration is in YAML.

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

Endpoints

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] 127.0.0.1:53863 GET /-/config
INFO[0013] 127.0.0.1:53865 POST /-/reload
INFO[0013] Hashes match. Skipping reload.

GitHub