diff options
author | obscuren <geffobscura@gmail.com> | 2014-02-28 19:21:12 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-02-28 19:21:12 +0800 |
commit | 839bd73fbb525f6c51e4205ce6519b6154cda2f0 (patch) | |
tree | 8bbb80d53425cfdb0391798eea77ff3af09ffe78 /ethutil/config.go | |
parent | 30ee32a7254658878b35c6a89e463427f99bd1b4 (diff) | |
parent | 3f7ec1a83fe13dc934d92a405ff01b0be6c04ac0 (diff) | |
download | go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar.gz go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar.bz2 go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar.lz go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar.xz go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.tar.zst go-tangerine-839bd73fbb525f6c51e4205ce6519b6154cda2f0.zip |
Merge branch 'release/0.3.0'
Diffstat (limited to 'ethutil/config.go')
-rw-r--r-- | ethutil/config.go | 78 |
1 files changed, 58 insertions, 20 deletions
diff --git a/ethutil/config.go b/ethutil/config.go index 2a239f8e2..5bf56134d 100644 --- a/ethutil/config.go +++ b/ethutil/config.go @@ -1,6 +1,7 @@ package ethutil import ( + "fmt" "log" "os" "os/user" @@ -18,7 +19,7 @@ const ( type config struct { Db Database - Log Logger + Log *Logger ExecPath string Debug bool Ver string @@ -34,17 +35,19 @@ func ReadConfig(base string) *config { usr, _ := user.Current() path := path.Join(usr.HomeDir, base) - //Check if the logging directory already exists, create it if not - _, err := os.Stat(path) - if err != nil { - if os.IsNotExist(err) { - log.Printf("Debug logging directory %s doesn't exist, creating it", path) - os.Mkdir(path, 0777) + if len(base) > 0 { + //Check if the logging directory already exists, create it if not + _, err := os.Stat(path) + if err != nil { + if os.IsNotExist(err) { + log.Printf("Debug logging directory %s doesn't exist, creating it\n", path) + os.Mkdir(path, 0777) + } } } - Config = &config{ExecPath: path, Debug: true, Ver: "0.2.2"} - Config.Log = NewLogger(LogFile|LogStd, 0) + Config = &config{ExecPath: path, Debug: true, Ver: "0.3.0"} + Config.Log = NewLogger(LogFile|LogStd, LogLevelDebug) } return Config @@ -57,15 +60,20 @@ const ( LogStd = 0x2 ) +type LogSystem interface { + Println(v ...interface{}) + Printf(format string, v ...interface{}) +} + type Logger struct { - logSys []*log.Logger + logSys []LogSystem logLevel int } -func NewLogger(flag LoggerType, level int) Logger { - var loggers []*log.Logger +func NewLogger(flag LoggerType, level int) *Logger { + var loggers []LogSystem - flags := log.LstdFlags | log.Lshortfile + flags := log.LstdFlags if flag&LogFile > 0 { file, err := os.OpenFile(path.Join(Config.ExecPath, "debug.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm) @@ -73,30 +81,60 @@ func NewLogger(flag LoggerType, level int) Logger { log.Panic("unable to create file logger", err) } - log := log.New(file, "[ETH]", flags) + log := log.New(file, "", flags) loggers = append(loggers, log) } if flag&LogStd > 0 { - log := log.New(os.Stdout, "[ETH]", flags) + log := log.New(os.Stdout, "", flags) loggers = append(loggers, log) } - return Logger{logSys: loggers, logLevel: level} + return &Logger{logSys: loggers, logLevel: level} +} + +func (log *Logger) AddLogSystem(logger LogSystem) { + log.logSys = append(log.logSys, logger) +} + +const ( + LogLevelDebug = iota + LogLevelInfo +) + +func (log *Logger) Debugln(v ...interface{}) { + if log.logLevel != LogLevelDebug { + return + } + + for _, logger := range log.logSys { + logger.Println(v...) + } +} + +func (log *Logger) Debugf(format string, v ...interface{}) { + if log.logLevel != LogLevelDebug { + return + } + + for _, logger := range log.logSys { + logger.Printf(format, v...) + } } -func (log Logger) Debugln(v ...interface{}) { - if log.logLevel != 0 { +func (log *Logger) Infoln(v ...interface{}) { + if log.logLevel > LogLevelInfo { return } + fmt.Println(len(log.logSys)) for _, logger := range log.logSys { logger.Println(v...) } } -func (log Logger) Debugf(format string, v ...interface{}) { - if log.logLevel != 0 { +func (log *Logger) Infof(format string, v ...interface{}) { + if log.logLevel > LogLevelInfo { return } |