humanlog

package module
v0.3.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

README

humanlog

Read logs from stdin and prints them back to stdout, but prettier.

Using it

Grab a release or :

With Go installed

$ go get -u github.com/casualjim/humanlog/...

On linux

wget -qO- https://github.com/casualjim/humanlog/releases/download/0.3.6/humanlog_Linux_x86_64.tar.gz | tar xvz

On OS X

brew tap aybabtme/homebrew-tap
brew install humanlog

Example

If you emit logs in JSON or in logfmt, you will enjoy pretty logs when those entries are encountered by humanlog. Unrecognized lines are left unchanged.

$ humanlog < /var/log/logfile.log

2__fish___users_antoine_gocode_src_github_com_aybabtme_humanlog__fish_

Contributing

How to help:

  • support more log formats: by submitting human.Handler implementations.
  • live querying: add support for filtering in log output in real time.
  • charting: some key-values have semantics that could be charted in real time. For instance, durations, frequency of numeric values, etc. See the l2met project.

Usage

NAME:
   humanlog - reads structured logs from stdin, makes them pretty on stdout!

USAGE:
   humanlog [global options] command [command options] [arguments...]

VERSION:
   0.4.0

AUTHOR:
  Antoine Grondin - <antoine@digitalocean.com>

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --skip '--skip option --skip option'   keys to skip when parsing a log entry
   --keep '--keep option --keep option'   keys to keep when parsing a log entry
   --sort-longest       sort by longest key after having sorted lexicographically
   --skip-unchanged        skip keys that have the same value than the previous entry
   --truncate           truncates values that are longer than --truncate-length
   --truncate-length '15'     truncate values that are longer than this length
   --help, -h           show help
   --version, -v        print the version

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultOptions = &HandlerOptions{
	SortLongest:    true,
	SkipUnchanged:  true,
	Truncates:      false,
	LightBg:        false,
	TruncateLength: 100,
	TimeFormat:     time.Stamp,

	KeyColor:              color.New(color.FgYellow),
	ValColor:              color.New(color.FgHiBlue),
	TimeLightBgColor:      color.New(color.Reset),
	TimeDarkBgColor:       color.New(color.Reset),
	MsgLightBgColor:       color.New(color.Reset),
	MsgAbsentLightBgColor: color.New(color.FgHiBlack),
	MsgDarkBgColor:        color.New(color.Reset),
	MsgAbsentDarkBgColor:  color.New(color.FgHiWhite),
	DebugLevelColor:       color.New(color.FgCyan),
	InfoLevelColor:        color.New(color.FgGreen),
	WarnLevelColor:        color.New(color.FgYellow),
	ErrorLevelColor:       color.New(color.FgRed),
	PanicLevelColor:       color.New(color.BgRed, color.FgWhite),
	FatalLevelColor:       color.New(color.BgHiRed, color.FgHiWhite),
	UnknownLevelColor:     color.New(color.FgHiBlack),
}

Functions

func Scanner

func Scanner(src io.Reader, dst io.Writer, opts *HandlerOptions) error

Scanner reads logfmt'd lines from src and prettify them onto dst. If the lines aren't logfmt, it will simply write them out with no prettification.

Types

type Handler

type Handler interface {
	CanHandle(line []byte) bool
	Prettify(skipUnchanged bool) []byte
	logfmt.Handler
}

Handler can recognize it's log lines, parse them and prettify them.

type HandlerOptions

type HandlerOptions struct {
	Skip           map[string]struct{}
	Keep           map[string]struct{}
	SortLongest    bool
	SkipUnchanged  bool
	Truncates      bool
	LightBg        bool
	TruncateLength int
	TimeFormat     string

	KeyColor              *color.Color
	ValColor              *color.Color
	TimeLightBgColor      *color.Color
	TimeDarkBgColor       *color.Color
	MsgLightBgColor       *color.Color
	MsgAbsentLightBgColor *color.Color
	MsgDarkBgColor        *color.Color
	MsgAbsentDarkBgColor  *color.Color
	DebugLevelColor       *color.Color
	InfoLevelColor        *color.Color
	WarnLevelColor        *color.Color
	ErrorLevelColor       *color.Color
	PanicLevelColor       *color.Color
	FatalLevelColor       *color.Color
	UnknownLevelColor     *color.Color
}

func (*HandlerOptions) SetKeep

func (h *HandlerOptions) SetKeep(keep []string)

func (*HandlerOptions) SetSkip

func (h *HandlerOptions) SetSkip(skip []string)

type JSONHandler

type JSONHandler struct {
	Opts *HandlerOptions

	Level   string
	Time    time.Time
	Message string
	Fields  map[string]string
	// contains filtered or unexported fields
}

JSONHandler can handle logs emmited by logrus.TextFormatter loggers.

func (*JSONHandler) Prettify

func (h *JSONHandler) Prettify(skipUnchanged bool) []byte

Prettify the output in a logrus like fashion.

func (*JSONHandler) TryHandle

func (h *JSONHandler) TryHandle(d []byte) bool

TryHandle tells if this line was handled by this handler.

func (*JSONHandler) UnmarshalJSON

func (h *JSONHandler) UnmarshalJSON(data []byte) bool

UnmarshalJSON sets the fields of the handler.

type LogfmtHandler added in v0.3.6

type LogfmtHandler struct {
	Opts *HandlerOptions

	Level   string
	Time    time.Time
	Message string
	Fields  map[string]string
	// contains filtered or unexported fields
}

LogfmtHandler can handle logs emmited by logrus.TextFormatter loggers.

func (*LogfmtHandler) Prettify added in v0.3.6

func (h *LogfmtHandler) Prettify(skipUnchanged bool) []byte

Prettify the output in a logrus like fashion.

func (*LogfmtHandler) TryHandle added in v0.3.6

func (h *LogfmtHandler) TryHandle(d []byte) bool

CanHandle tells if this line can be handled by this handler.

func (*LogfmtHandler) UnmarshalLogfmt added in v0.3.6

func (h *LogfmtHandler) UnmarshalLogfmt(data []byte) bool

HandleLogfmt sets the fields of the handler.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL