基于 `zap` 包封装。除了实现 `Go` 日志包的基本功能外,还实现了很多高级功能 本包基于`github.com/tkestack/tke/pkg/util/log`裁剪
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.3 KiB

2 years ago
  1. // Package klog init klog logger. klog is used by kubernetes, this can compatible the kubernetes packages.
  2. package klog
  3. import (
  4. "flag"
  5. "go.uber.org/zap"
  6. "k8s.io/klog"
  7. )
  8. // InitLogger init klog by zap logger.
  9. func InitLogger(zapLogger *zap.Logger) {
  10. fs := flag.NewFlagSet("klog", flag.ExitOnError)
  11. klog.InitFlags(fs)
  12. defer klog.Flush()
  13. klog.SetOutputBySeverity("INFO", &infoLogger{logger: zapLogger})
  14. klog.SetOutputBySeverity("WARNING", &warnLogger{logger: zapLogger})
  15. klog.SetOutputBySeverity("FATAL", &fatalLogger{logger: zapLogger})
  16. klog.SetOutputBySeverity("ERROR", &errorLogger{logger: zapLogger})
  17. _ = fs.Set("skip_headers", "true")
  18. _ = fs.Set("logtostderr", "false")
  19. }
  20. type infoLogger struct {
  21. logger *zap.Logger
  22. }
  23. func (l *infoLogger) Write(p []byte) (n int, err error) {
  24. l.logger.Info(string(p[:len(p)-1]))
  25. return len(p), nil
  26. }
  27. type warnLogger struct {
  28. logger *zap.Logger
  29. }
  30. func (l *warnLogger) Write(p []byte) (n int, err error) {
  31. l.logger.Warn(string(p[:len(p)-1]))
  32. return len(p), nil
  33. }
  34. type fatalLogger struct {
  35. logger *zap.Logger
  36. }
  37. func (l *fatalLogger) Write(p []byte) (n int, err error) {
  38. l.logger.Fatal(string(p[:len(p)-1]))
  39. return len(p), nil
  40. }
  41. type errorLogger struct {
  42. logger *zap.Logger
  43. }
  44. func (l *errorLogger) Write(p []byte) (n int, err error) {
  45. l.logger.Error(string(p[:len(p)-1]))
  46. return len(p), nil
  47. }