基于 `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.

33 lines
741 B

2 years ago
  1. package log
  2. import (
  3. "context"
  4. )
  5. type key int
  6. const (
  7. logContextKey key = iota
  8. )
  9. // WithContext 把命令行输出logger保存到context中.可以使用FromContext(ctx)获取绑定的logger
  10. func WithContext(ctx context.Context) context.Context {
  11. return std.WithContext(ctx)
  12. }
  13. // WithContext 把指定的logger保存到context中.可以使用FromContext(ctx)获取绑定的logger
  14. func (l *zapLogger) WithContext(ctx context.Context) context.Context {
  15. return context.WithValue(ctx, logContextKey, l)
  16. }
  17. // FromContext 从ctx中获取logger
  18. func FromContext(ctx context.Context) Logger {
  19. if ctx != nil {
  20. logger := ctx.Value(logContextKey)
  21. if logger != nil {
  22. return logger.(Logger)
  23. }
  24. }
  25. return WithName("Unknown-Context")
  26. }