time.go 962 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package log
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. )
  7. var DefaultTimeFormatter = func() string {
  8. return time.Now().Format(timeFmt)
  9. }
  10. // Preferred and probably faster than DefaultTimeFormatter.
  11. var DefaultTimeAppendFormatter = func(b []byte) []byte {
  12. return time.Now().AppendFormat(b, timeFmt)
  13. }
  14. func GetDefaultTimeAppendFormatter() func([]byte) []byte {
  15. if DefaultTimeAppendFormatter != nil {
  16. return DefaultTimeAppendFormatter
  17. }
  18. // Hopefully this doesn't allocate.
  19. return func(b []byte) []byte {
  20. return append(b, DefaultTimeFormatter()...)
  21. }
  22. }
  23. var timeFmt string
  24. func init() {
  25. var ok bool
  26. timeFmt, ok = os.LookupEnv(EnvTimeFormat)
  27. if !ok {
  28. timeFmt = "2006-01-02 15:04:05 -0700"
  29. }
  30. }
  31. var started = time.Now()
  32. var TimeFormatSecondsSinceInit = func() string {
  33. return fmt.Sprintf("%.3fs", time.Since(started).Seconds())
  34. }
  35. var TimeAppendFormatSecondsSinceInit = func(b []byte) []byte {
  36. return fmt.Appendf(b, "%.3fs", time.Since(started).Seconds())
  37. }