Skip to content

Commit

Permalink
Add json and zerolog writers
Browse files Browse the repository at this point in the history
* Add simple json writer with optional jsonpath support

* Add zerolog writer, which formats json logs using the zerolog
  console writer

* Added flags --json and --jsonpath to enabled json writer

* Added flags --zerolog and additional flags to customise zerolog
  field names
  • Loading branch information
johncsnyder authored and chandanpasunoori committed Jan 5, 2023
1 parent fe142b1 commit 7124ece
Show file tree
Hide file tree
Showing 11 changed files with 265 additions and 589 deletions.
46 changes: 33 additions & 13 deletions cmd/kail/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import (
logutil "github.com/boz/go-logutil"
logutil_logrus "github.com/boz/go-logutil/logrus"
"github.com/boz/kail"
"github.com/boz/kail/writers"
"github.com/boz/kcache/nsname"
"github.com/rs/zerolog"
"github.com/sirupsen/logrus"
kingpin "gopkg.in/alecthomas/kingpin.v2"
apierrors "k8s.io/apimachinery/pkg/api/errors"
Expand Down Expand Up @@ -46,12 +48,6 @@ var (
flagNode = kingpin.Flag("node", "node").PlaceHolder("NAME").Strings()
flagIng = kingpin.Flag("ing", "ingress").PlaceHolder("NAME").Strings()

flagOutput = kingpin.Flag("output", "Log output mode (default, raw, json, or json-pretty)").
Short('o').
PlaceHolder("default").
Default("default").
String()

flagContext = kingpin.Flag("context", "kubernetes context").PlaceHolder("CONTEXT-NAME").String()

flagCurrentNS = kingpin.Flag("current-ns", "use namespace from current context").
Expand All @@ -75,6 +71,25 @@ var (
PlaceHolder("DURATION").
Default("1s").
Duration()

flagOutput = kingpin.Flag("output", "Log output mode (default, raw, json, or json-pretty, zerolog)").
Short('o').
PlaceHolder("default").
Default("default").
String()

flagZerologTimestampFieldName = kingpin.Flag("zerolog-timestamp-field", "sets the zerolog timestamp field name, works with --output=zerolog").
Default("time").
String()
flagZerologLevelFieldName = kingpin.Flag("zerolog-level-field", "sets the zerolog level field name, works with --output=zerolog").
Default("level").
String()
flagZerologMessageFieldName = kingpin.Flag("zerolog-message-field", "sets the zerolog message field name, works with --output=zerolog").
Default("message").
String()
flagZerologErrorFieldName = kingpin.Flag("zerolog-error-field", "sets the zerolog error field name, works with --output=zerolog").
Default("error").
String()
)

var (
Expand Down Expand Up @@ -316,18 +331,23 @@ func createController(
}

func streamLogs(controller kail.Controller) {

var writer kail.Writer
var writer writers.Writer

switch *flagOutput {
case "default":
writer = kail.NewWriter(os.Stdout)
writer = writers.NewWriter(os.Stdout)
case "raw":
writer = writers.NewRawWriter(os.Stdout)
case "json":
writer = kail.NewJSONWriter(os.Stdout)
writer = writers.NewJSONWriter(os.Stdout)
case "json-pretty":
writer = kail.NewJSONPrettyWriter(os.Stdout)
case "raw":
writer = kail.NewRawWriter(os.Stdout)
writer = writers.NewJSONPrettyWriter(os.Stdout)
case "zerolog":
zerolog.TimestampFieldName = *flagZerologTimestampFieldName
zerolog.LevelFieldName = *flagZerologLevelFieldName
zerolog.MessageFieldName = *flagZerologMessageFieldName
zerolog.ErrorFieldName = *flagZerologErrorFieldName
writer = writers.NewZerologWriter(os.Stdout)
default:
kingpin.Fatalf("Invalid output: '%v'", *flagOutput)
}
Expand Down
19 changes: 3 additions & 16 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
module github.com/boz/kail

go 1.18
go 1.19

require (
github.com/boz/go-lifecycle v0.1.0
github.com/boz/go-logutil v0.1.0
github.com/boz/kcache v0.5.0
github.com/fatih/color v1.13.0
github.com/goreleaser/godownloader v0.0.0-20190525212044-f9a1d47be7eb
github.com/rs/zerolog v1.15.0
github.com/sirupsen/logrus v1.9.0
github.com/stretchr/testify v1.8.1
github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0
gopkg.in/alecthomas/kingpin.v2 v2.2.6
k8s.io/api v0.26.0
k8s.io/apimachinery v0.26.0
Expand All @@ -19,11 +20,6 @@ require (
require (
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect
github.com/apex/log v1.1.0 // indirect
github.com/aws/aws-sdk-go v1.15.64 // indirect
github.com/blakesmith/ar v0.0.0-20150311145944-8bd4349a67f2 // indirect
github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e // indirect
github.com/client9/codegen v0.0.0-20180316044450-92480ce66a06 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
Expand All @@ -34,21 +30,13 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/go-github/v25 v25.0.1 // indirect
github.com/google/go-querystring v1.0.0 // indirect
github.com/google/gofuzz v1.1.0 // indirect
github.com/goreleaser/goreleaser v0.107.0 // indirect
github.com/goreleaser/nfpm v0.11.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kamilsk/retry/v4 v4.0.0 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
github.com/mattn/go-colorable v0.1.9 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-zglob v0.0.0-20180803001819-2ea3427bfa53 // indirect
github.com/mitchellh/go-homedir v1.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
Expand All @@ -57,7 +45,6 @@ require (
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 // indirect
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/term v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
Expand Down
Loading

0 comments on commit 7124ece

Please sign in to comment.