log

package
v1.11.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Sep 28, 2023 License: Apache-2.0 Imports: 7 Imported by: 120

README

Tips for reading and manipulating logs.

How to understand logs

  1. Every log line starts with timestamp, which is helpful when tracing request in the application chain
  2. Most of the log lines contains [type:NetworkService] or [type:NetworkServiceRegistry] which helps to separate request logic from registration logic
  3. Most of the log lines contains [id:'some value'] which is helpful when tracing request in application chain
  4. It is useful to transform logs using grep utility to discard 'noise' logs that is not needed for analyzing(examples will be in section Useful scripts)
  5. It is helpful to install plugin on IDE which is colorizing logs. (for example, ANSI highlighter for Goland)
  6. Message an error during getting metadata from context: metadata is missed in ctx is a good criteria for separating ordinary request from refresh request(refresh doesn't have metadata)

Useful scripts

  1. Applied to folder containing resulting logs. It removes lines related to Jaeger and remove lines with just spans. Also, it changes file extension to one suitable for highlighters
for filename in *.logs; do
    cat "${filename}" | grep -v "Reporting span" | grep -v "Jaeger" > "$(echo "${filename}" | sed "s/\.logs/\.log/g")"
    rm "${filename}"
done
  1. It is useful to grep logs for extracting specific information that you want - by id, type, loglevel etc. For example:
  • get only networkService type lines
grep -w type:networkService some_log_file.log > another_log_file.log
  • get logs without any NetworkServiceEndpointRegistry type lines
grep -w -v type:NetworkServiceEndpointRegistry some_log_file.log > another_log_file.log
  • get all lines with specific request id (random id in example)
grep -w id:d7bb2d77-7cd4-44ad-902b-5e392852d93a-final-endpoint some_log_file.log > another_log_file.log

Documentation

Overview

Package log provides an unified interface Logger for logging

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnableTracing

func EnableTracing(enable bool)

EnableTracing - enable/disable traces

func IsDefault added in v1.7.0

func IsDefault(logger Logger) bool

IsDefault - true if the logger is a default logger

func IsTracingEnabled

func IsTracingEnabled() bool

IsTracingEnabled - checks if it is allowed to use traces

func Join

func Join(ctx context.Context, log Logger) context.Context

Join - concatenates new logger with existing loggers

func SetGlobalLogger added in v1.7.0

func SetGlobalLogger(logger Logger)

SetGlobalLogger Set the global Logger. This should be called early in main() only.

func WithLog

func WithLog(ctx context.Context, log ...Logger) context.Context

WithLog - creates new context with `log` inside

Types

type Field added in v1.9.0

type Field struct {
	// contains filtered or unexported fields
}

Field structure that is used for additional information in the logs

func NewField added in v1.9.0

func NewField(k string, v interface{}) *Field

NewField creates Field

func (*Field) Key added in v1.9.0

func (f *Field) Key() string

Key returns key

func (*Field) Val added in v1.9.0

func (f *Field) Val() interface{}

Val returns value

type Logger

type Logger interface {
	Info(v ...interface{})
	Infof(format string, v ...interface{})
	Warn(v ...interface{})
	Warnf(format string, v ...interface{})
	Error(v ...interface{})
	Errorf(format string, v ...interface{})
	Fatal(v ...interface{})
	Fatalf(format string, v ...interface{})
	Debug(v ...interface{})
	Debugf(format string, v ...interface{})
	Trace(v ...interface{})
	Tracef(format string, v ...interface{})

	Object(k, v interface{})

	WithField(key, value interface{}) Logger
}

Logger - unified interface for logging

func Combine added in v1.1.0

func Combine(s ...Logger) Logger

Combine creates grouped logger from all provided loggers

func Default

func Default() Logger

Default - provides a default logger

func Empty

func Empty() Logger

Empty - provides a logger that does nothing

func FromContext

func FromContext(ctx context.Context) Logger

FromContext - returns logger from context

func L added in v1.7.0

func L() Logger

L returns the global Logger

Directories

Path Synopsis
Package logruslogger provides wrapper for logrus logger which is consistent with Logger interface
Package logruslogger provides wrapper for logrus logger which is consistent with Logger interface
Package spanlogger provides a set of utilities to assist in working with spans
Package spanlogger provides a set of utilities to assist in working with spans

Jump to

Keyboard shortcuts

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