log.go 880 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package logger
  2. import (
  3. "fmt"
  4. "io"
  5. "log"
  6. "os"
  7. "github.com/ethereum/go-ethereum/common"
  8. )
  9. func openLogFile(datadir string, filename string) *os.File {
  10. path := common.AbsolutePath(datadir, filename)
  11. file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
  12. if err != nil {
  13. panic(fmt.Sprintf("error opening log file '%s': %v", filename, err))
  14. }
  15. return file
  16. }
  17. func New(datadir string, logFile string, logLevel int, logFormat string) LogSystem {
  18. var writer io.Writer
  19. if logFile == "" {
  20. writer = os.Stdout
  21. } else {
  22. writer = openLogFile(datadir, logFile)
  23. }
  24. var sys LogSystem
  25. switch logFormat {
  26. case "raw":
  27. sys = NewRawLogSystem(writer, 0, LogLevel(logLevel))
  28. case "json":
  29. sys = NewJsonLogSystem(writer, 0, LogLevel(logLevel))
  30. default:
  31. sys = NewStdLogSystem(writer, log.LstdFlags, LogLevel(logLevel))
  32. }
  33. AddLogSystem(sys)
  34. return sys
  35. }