good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • c5bc6bc56e72d7a1d69f9d6dc1c6a35980df514c
  • master default protected
  • add-tests
  • extensions
  • gateway
  • codec-bundle
  • renovate/github.com-gfx-labs-sse-digest
  • renovate/golang.org-x-net-0.x
  • renovate/golang-1.x
  • jsonv2
  • garet
  • check
  • http-curse
  • whatthefuck
  • pool
  • envelope
  • mod
  • simplify
  • new-interface
  • v2
  • master-old
  • v0.8.0
  • v0.7.0
  • v0.6.1
  • v0.6.0
  • v0.5.4
  • v0.5.3
  • v0.5.2
  • v0.5.1
  • v0.5.0
  • v0.4.19
  • v0.4.18
  • v0.4.17
  • v0.4.16
  • v0.4.15
  • v0.4.14
  • v0.4.13
  • v0.4.12
  • v0.4.11
  • v0.4.10
  • v0.4.9
41 results

chain.go

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    config.go 2.76 KiB
    package ethutil
    
    import (
    	"fmt"
    	"log"
    	"os"
    	"os/user"
    	"path"
    	"runtime"
    )
    
    // Log types available
    type LogType byte
    
    const (
    	LogTypeStdIn = 1
    	LogTypeFile  = 2
    )
    
    // Config struct
    type config struct {
    	Db Database
    
    	Log          *Logger
    	ExecPath     string
    	Debug        bool
    	Ver          string
    	ClientString string
    	Pubkey       []byte
    	Seed         bool
    }
    
    var Config *config
    
    // Read config
    //
    // Initialize the global Config variable with default settings
    func ReadConfig(base string) *config {
    	if Config == nil {
    		usr, _ := user.Current()
    		path := path.Join(usr.HomeDir, base)
    
    		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.5"}
    		Config.Log = NewLogger(LogFile|LogStd, LogLevelDebug)
    		Config.SetClientString("/Ethereum(G)")
    	}
    
    	return Config
    }
    
    // Set client string
    //
    func (c *config) SetClientString(str string) {
    	Config.ClientString = fmt.Sprintf("%s nv%s/%s", str, c.Ver, runtime.GOOS)
    }
    
    type LoggerType byte
    
    const (
    	LogFile = 0x1
    	LogStd  = 0x2
    )
    
    type LogSystem interface {
    	Println(v ...interface{})
    	Printf(format string, v ...interface{})
    }
    
    type Logger struct {
    	logSys   []LogSystem
    	logLevel int
    }
    
    func NewLogger(flag LoggerType, level int) *Logger {
    	var loggers []LogSystem
    
    	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)
    		if err != nil {
    			log.Panic("unable to create file logger", err)
    		}
    
    		log := log.New(file, "", flags)
    
    		loggers = append(loggers, log)
    	}
    	if flag&LogStd > 0 {
    		log := log.New(os.Stdout, "", flags)
    		loggers = append(loggers, log)
    	}
    
    	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) Infoln(v ...interface{}) {
    	if log.logLevel > LogLevelInfo {
    		return
    	}
    
    	//fmt.Println(len(log.logSys))
    	for _, logger := range log.logSys {
    		logger.Println(v...)
    	}
    }
    
    func (log *Logger) Infof(format string, v ...interface{}) {
    	if log.logLevel > LogLevelInfo {
    		return
    	}
    
    	for _, logger := range log.logSys {
    		logger.Printf(format, v...)
    	}
    }