diff options
author | zelig <viktor.tron@gmail.com> | 2014-06-23 19:49:04 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2014-06-23 19:49:04 +0800 |
commit | 8e9cc3697944c3e568186a5c23ac729f6eb4a1f4 (patch) | |
tree | 96f3b55f7496a2889e0efa302fb03dfd81d5592c /ethlog/README.md | |
parent | 0251fae5ccf6984c558d59cd2b36ef89116c061e (diff) | |
download | go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar.gz go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar.bz2 go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar.lz go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar.xz go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.tar.zst go-tangerine-8e9cc3697944c3e568186a5c23ac729f6eb4a1f4.zip |
refactor logging. Details:
- 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
- README.md
- loggers_test
Diffstat (limited to 'ethlog/README.md')
-rw-r--r-- | ethlog/README.md | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ethlog/README.md b/ethlog/README.md new file mode 100644 index 000000000..f8818d98e --- /dev/null +++ b/ethlog/README.md @@ -0,0 +1,58 @@ +## 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 + +## Usage + +In an ethereum component package: + + import "github.com/ethereum/eth-go/ethlog" + + // package-wide logger using tag + var logger = ethlog.NewLogger("TAG") + + logger.Infoln("this is info") # > [TAG] This 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) + + + + |