mirror of https://github.com/ethereum/go-ethereum
parent
a6265cb49a
commit
e0f93c74c5
@ -1,62 +0,0 @@ |
||||
## 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) |
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue