aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/admin/vespa-wrapper/logfmt/cmd.go
blob: e0124a5970ee8e75fe2621d12337300a7a28f764 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// vespa-logfmt command
// Author: arnej

package logfmt

import (
	"os"

	"github.com/spf13/cobra"
	"github.com/vespa-engine/vespa/client/go/internal/build"
	"github.com/vespa-engine/vespa/client/go/internal/vespa"
)

func RunCmdLine() {
	_ = vespa.FindHome()
	cobra := NewLogfmtCmd()
	err := cobra.Execute()
	if err != nil {
		os.Exit(1)
	}
}

func NewLogfmtCmd() *cobra.Command {
	var (
		curOptions Options = NewOptions()
	)
	cmd := &cobra.Command{
		Use:   "vespa-logfmt",
		Short: "convert vespa.log to human-readable format",
		Long: `vespa-logfmt takes input in the internal vespa format
and converts it to something human-readable`,
		Version: build.Version,
		Run: func(cmd *cobra.Command, args []string) {
			RunLogfmt(&curOptions, args)
		},
	}
	cmd.Flags().VarP(&curOptions.ShowLevels, "level", "l", "turn levels on/off\n")
	cmd.Flags().VarP(&curOptions.ShowFields, "show", "s", "turn fields shown on/off\n")
	cmd.Flags().VarP(&curOptions.ComponentFilter, "component", "c", "select components by regexp")
	cmd.Flags().VarP(&curOptions.MessageFilter, "message", "m", "select messages by regexp")
	cmd.Flags().BoolVarP(&curOptions.OnlyInternal, "internal", "i", false, "select only internal components")
	cmd.Flags().BoolVar(&curOptions.TruncateService, "truncateservice", false, "truncate service name")
	cmd.Flags().BoolVar(&curOptions.TruncateService, "ts", false, "")
	cmd.Flags().BoolVarP(&curOptions.FollowTail, "follow", "f", false, "follow logfile with tail -f")
	cmd.Flags().BoolVarP(&curOptions.DequoteNewlines, "nldequote", "N", false, "dequote newlines embedded in message")
	cmd.Flags().BoolVarP(&curOptions.DequoteNewlines, "dequotenewlines", "n", false, "dequote newlines embedded in message")
	cmd.Flags().BoolVarP(&curOptions.TruncateComponent, "truncatecomponent", "t", false, "truncate component name")
	cmd.Flags().BoolVar(&curOptions.TruncateComponent, "tc", false, "")
	cmd.Flags().StringVarP(&curOptions.OnlyHostname, "host", "H", "", "select only one host")
	cmd.Flags().StringVarP(&curOptions.OnlyPid, "pid", "p", "", "select only one process ID")
	cmd.Flags().StringVarP(&curOptions.OnlyService, "service", "S", "", "select only one service")
	cmd.Flags().VarP(&curOptions.Format, "format", "F", "select logfmt output format, vespa (default), json or raw are supported. The json output format is not stable, and will change in the future.")
	cmd.Flags().MarkHidden("tc")
	cmd.Flags().MarkHidden("ts")
	cmd.Flags().MarkHidden("dequotenewlines")
	return cmd
}