Tails a set of log files and serves them up on a web server with syntax colors via regex.
Binaries available in releases. See usage below.
Goals:
- Run on anything and everything
- Support as many browsers as possible
- Ease deployment and usage with a single executable with minimal configuration required
Developed with Go and React
- Call
logstationorlogstation.exe- It will create an logstation.conf in your current directory if one doesn't exist and exit
- Update logstation.conf as desired
- Call
logstationorlogstation.exeagain
- Navigate to
http://127.0.0.1:8884to start tailing (refer to logstation.conf for listen IP and port)
You can also use -c your-logstation.conf argument to specify a config file
Take a look at an example logstation.conf here.
An official image is published to GitHub Container Registry on every tag push. It is built from Chainguard base images, runs as a non-root user, and is available for linux/amd64 and linux/arm64.
The image works with both docker and podman. The Containerfile is self-contained -- it builds the web frontend and the Go binary in one shot:
podman build -f Containerfile -t logstation:dev .On first run, if no config file is present, logstation generates a default logstation.conf in /config and then starts the server. To run it with a directory of logs:
podman run -d --name logstation \
-p 8884:8884 \
-v /var/log:/logs:z \
ghcr.io/jdrews/logstation:latestThen navigate to http://127.0.0.1:8884.
To use your own config, bind-mount it with the :z SELinux flag so the container's non-root user can read it (this works with both docker and podman, including rootless podman). Point the logs list in your config at the mounted files, e.g. /logs/*.log:
podman run -d --name logstation \
-p 8884:8884 \
-v /var/log:/logs:z \
-v ./logstation.conf:/config/logstation.conf:z \
ghcr.io/jdrews/logstation:latestlogstation uses goreleaser for all releases
Start by building the web frontend:
cd web; yarn build
To build all targets locally you can run the following in the root directory:
goreleaser build --snapshot --clean
If you want to build for a specific target you can set environment variables
- In bash this would look like:
GOOS=linux GOARCH=amd64 goreleaser build --snapshot --clean --single-target - In powershell this would look like:
$env:GOOS="linux"; $env:GOARCH="amd64"; goreleaser build --snapshot --clean --single-target
Reference the releases and .goreleaser.yaml for all officially supported targets.
- Push a tag following semver
git tag -a 2.0.0-beta1 -m "2.0.0-beta1"git push origin 2.0.0-beta1
- Ensure you have an environment variable with
GITHUB_TOKEN="YOUR_GH_TOKEN"and minimum ofwrite:packagespermissions - Release!
cd web; yarn buildcd ..; goreleaser release
- Read the goreleaser quickstart for more details
Prior to 2.x, this app was built using Scala/Play/JS. At 2.x this app was rewritten in Go and React. If you're looking for the older versions reference the releases prior to 2.x.