CLI utility to pipe JSON logs through to pretty print and colorize them (#449)
This commit is contained in:
parent
d894f123bc
commit
c2b9d0e2de
|
@ -0,0 +1,40 @@
|
||||||
|
# Zerolog PrettyLog
|
||||||
|
|
||||||
|
This is a basic CLI utility that will colorize and pretty print your structured JSON logs.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
You can compile it or run it directly. The only issue is that by default Zerolog does not output to `stdout`
|
||||||
|
but rather to `stderr` so we must pipe `stderr` stream to this CLI tool.
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
These commands will redirect `stderr` to our `prettylog` tool and `stdout` will remain unaffected.
|
||||||
|
|
||||||
|
1. Compiled version
|
||||||
|
|
||||||
|
```shell
|
||||||
|
some_program_with_zerolog 2> >(prettylog)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run it directly with `go run`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
some_program_with_zerolog 2> >(go run cmd/prettylog/prettylog.go)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
These commands will redirect `stderr` to `stdout` and then pipe it to our `prettylog` tool.
|
||||||
|
|
||||||
|
1. Compiled version
|
||||||
|
|
||||||
|
```shell
|
||||||
|
some_program_with_zerolog 2>&1 | prettylog
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run it directly with `go run`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
some_program_with_zerolog 2>&1 | go run cmd/prettylog/prettylog.go
|
||||||
|
```
|
|
@ -0,0 +1,26 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/rs/zerolog"
|
||||||
|
)
|
||||||
|
|
||||||
|
func isInputFromPipe() bool {
|
||||||
|
fileInfo, _ := os.Stdin.Stat()
|
||||||
|
return fileInfo.Mode()&os.ModeCharDevice == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if !isInputFromPipe() {
|
||||||
|
fmt.Println("The command is intended to work with pipes.")
|
||||||
|
fmt.Println("Usage: app_with_zerolog | 2> >(prettylog)")
|
||||||
|
os.Exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
writer := zerolog.NewConsoleWriter()
|
||||||
|
_, _ = io.Copy(writer, os.Stdin)
|
||||||
|
}
|
Loading…
Reference in New Issue