log

package
v1.5.0-rc.2 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2022 License: Apache-2.0 Imports: 8 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 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 WithLog

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

WithLog - creates new context with `log` inside

Types

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

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