Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tlkamp/log-reloading
Live log reloading in Go.
https://github.com/tlkamp/log-reloading
example go golang http http-server logging logrus logs reload reloading
Last synced: 11 days ago
JSON representation
Live log reloading in Go.
- Host: GitHub
- URL: https://github.com/tlkamp/log-reloading
- Owner: tlkamp
- License: mit
- Created: 2020-01-12T05:44:31.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-09T02:51:45.000Z (over 3 years ago)
- Last Synced: 2024-06-19T05:24:31.324Z (5 months ago)
- Topics: example, go, golang, http, http-server, logging, logrus, logs, reload, reloading
- Language: Go
- Size: 20.5 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Go Report Card](https://goreportcard.com/badge/github.com/tlkamp/log-reloading)](https://goreportcard.com/report/github.com/tlkamp/log-reloading)
# 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](https://user-images.githubusercontent.com/18516698/72223338-41b1d880-3533-11ea-9358-97ee0597ba6d.gif)## 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**
```console
# 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`.```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
```console
$ 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.
```