ethlog

package
v0.5.22 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2014 License: MIT Imports: 5 Imported by: 0

README

Features

  • packages use tagged logger sending log messages to shared (process-wide) logging engine
  • log writers (interface ethlog.LogSystem) can be added to the logging engine by wrappers/guis/clients
  • shared logging engine dispatching to multiple log systems
  • log level can be set separately per log system
  • async logging thread: logging IO does not block main thread
  • log messages are synchronously stringified to avoid incorrectly logging of changed states
  • log level enum: ethlog.LogLevel: Silence, ErrorLevel, WarnLevel, InfoLevel, DebugLevel, DebugDetailLevel

Usage

In an ethereum component package:

import "github.com/ethereum/eth-go/ethlog"

// package-wide logger using tag
var logger = ethlog.NewLogger("TAG")

Logger provides named Printf and Println style methods for all loglevels

logger.Infoln("this is info") # > [TAG] This is info
logger.Infof("this %v is info", object) # > [TAG] This object is info

Ethereum wrappers should register log systems conforming to ethlog.LogSystem

import "github.com/ethereum/eth-go/ethlog"

type CustomLogWriter struct {
  logLevel ethlog.LogLevel
}

func (t *TestLogSystem) SetLogLevel(i LogLevel) {
  t.level = i
}

func (t *TestLogSystem) GetLogLevel() LogLevel {
  return t.level
}

func (c *CustomLogWriter) Printf(format string, v...interface{}) {
  //....
}

func (c *CustomLogWriter) Println(v...interface{}) {
  //....
}

ethlog.AddLogWriter(&CustomLogWriter{})

ethlog also provides constructors for that wrap io.Writers into a standard logger with a settable level:

filename := "test.log"
file, _ := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, os.ModePerm)
fileLogSystem := NewStdLogSystem(file, 0, WarnLevel)
AddLogSystem(fileLogSystem)
stdOutLogSystem := NewStdLogSystem(os.Stdout, 0, WarnLevel)
AddLogSystem(stdOutLogSystem)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddLogSystem

func AddLogSystem(logSystem LogSystem)

func Flush

func Flush()

waits until log messages are drained (dispatched to log writers)

Types

type LogLevel

type LogLevel uint8
const (
	Silence LogLevel = iota
	ErrorLevel
	WarnLevel
	InfoLevel
	DebugLevel
	DebugDetailLevel
)

type LogSystem

type LogSystem interface {
	GetLogLevel() LogLevel
	SetLogLevel(i LogLevel)
	Println(v ...interface{})
	Printf(format string, v ...interface{})
}

type Logger

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

func NewLogger

func NewLogger(tag string) *Logger

func (*Logger) DebugDetailf

func (logger *Logger) DebugDetailf(format string, v ...interface{})

func (*Logger) DebugDetailln

func (logger *Logger) DebugDetailln(v ...interface{})

func (*Logger) Debugf

func (logger *Logger) Debugf(format string, v ...interface{})

func (*Logger) Debugln

func (logger *Logger) Debugln(v ...interface{})

func (*Logger) Errorf

func (logger *Logger) Errorf(format string, v ...interface{})

func (*Logger) Errorln

func (logger *Logger) Errorln(v ...interface{})

func (*Logger) Fatalf

func (logger *Logger) Fatalf(format string, v ...interface{})

func (*Logger) Fatalln

func (logger *Logger) Fatalln(v ...interface{})

func (*Logger) Infof

func (logger *Logger) Infof(format string, v ...interface{})

func (*Logger) Infoln

func (logger *Logger) Infoln(v ...interface{})

func (*Logger) Warnf

func (logger *Logger) Warnf(format string, v ...interface{})

func (*Logger) Warnln

func (logger *Logger) Warnln(v ...interface{})

type StdLogSystem

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

func NewStdLogSystem

func NewStdLogSystem(writer io.Writer, flags int, level LogLevel) *StdLogSystem

func (*StdLogSystem) GetLogLevel

func (t *StdLogSystem) GetLogLevel() LogLevel

func (*StdLogSystem) Printf

func (t *StdLogSystem) Printf(format string, v ...interface{})

func (*StdLogSystem) Println

func (t *StdLogSystem) Println(v ...interface{})

func (*StdLogSystem) SetLogLevel

func (t *StdLogSystem) SetLogLevel(i LogLevel)

Jump to

Keyboard shortcuts

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