添加对应 php注册登录的token 验证逻辑
This commit is contained in:
		
							parent
							
								
									de7cd23deb
								
							
						
					
					
						commit
						62db070f61
					
				@ -34,6 +34,7 @@ func (m *KillaraCustomerTokenModel) InsertToken(data *KillaraCustomerToken) erro
 | 
			
		||||
	return m.db.Model(&KillaraCustomerToken{}).Transaction(func(tx *gorm.DB) error {
 | 
			
		||||
		// 查找是否存在相同客户ID、平台和Token的记录
 | 
			
		||||
		var existingToken KillaraCustomerToken
 | 
			
		||||
 | 
			
		||||
		err := tx.Where("customer_id = ? AND platform = ? AND token = ?", data.CustomerId, data.Platform, *data.Token).First(&existingToken).Error
 | 
			
		||||
 | 
			
		||||
		if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
@ -44,7 +45,7 @@ func (m *KillaraCustomerTokenModel) InsertToken(data *KillaraCustomerToken) erro
 | 
			
		||||
		if !errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
			// 存在记录,先删除
 | 
			
		||||
			err = tx.Delete(&existingToken).Error
 | 
			
		||||
			if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				tx.Rollback() // 删除错误,回滚事务
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
@ -57,7 +58,7 @@ func (m *KillaraCustomerTokenModel) InsertToken(data *KillaraCustomerToken) erro
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return tx.Commit().Error // 提交事务
 | 
			
		||||
		return err // 提交事务
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -113,12 +114,12 @@ func (m *KillaraCustomerTokenModel) GetToken(token string) (*KillaraCustomerToke
 | 
			
		||||
// 	return nil, nil
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
func (m *KillaraCustomerTokenModel) CheckToken(token string) (*KillaraCustomerToken, error) {
 | 
			
		||||
func (m *KillaraCustomerTokenModel) CheckToken(tokenstr string) (*KillaraCustomerToken, error) {
 | 
			
		||||
	var resultToken *KillaraCustomerToken
 | 
			
		||||
	err := m.db.Model(&KillaraCustomerToken{}).Transaction(func(tx *gorm.DB) error {
 | 
			
		||||
		// 查找 Token 记录
 | 
			
		||||
		var token KillaraCustomerToken
 | 
			
		||||
		err := tx.Where("token = ?", token).First(&token).Error
 | 
			
		||||
		err := tx.Where("token = ?", tokenstr).First(&token).Error
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
				return nil
 | 
			
		||||
@ -138,7 +139,7 @@ func (m *KillaraCustomerTokenModel) CheckToken(token string) (*KillaraCustomerTo
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		resultToken = &token
 | 
			
		||||
		return tx.Commit().Error // 提交事务
 | 
			
		||||
		return err // 提交事务
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -150,7 +151,7 @@ func (m *KillaraCustomerTokenModel) CheckToken(token string) (*KillaraCustomerTo
 | 
			
		||||
func (m *KillaraCustomerTokenModel) ClearDuplicateToken(customerID uint64, currentToken string, platform int) error {
 | 
			
		||||
 | 
			
		||||
	return m.db.Model(&KillaraCustomerToken{}).Transaction(func(tx *gorm.DB) error {
 | 
			
		||||
		var tokens []KillaraCustomerToken
 | 
			
		||||
		var tokens []*KillaraCustomerToken
 | 
			
		||||
		err := tx.Where("customer_id = ? AND platform = ?", customerID, platform).Find(&tokens).Error
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
@ -164,7 +165,7 @@ func (m *KillaraCustomerTokenModel) ClearDuplicateToken(customerID uint64, curre
 | 
			
		||||
		for _, token := range tokens {
 | 
			
		||||
			if *token.Token != currentToken {
 | 
			
		||||
				// err := tx.Delete(token).Error todo: 不太明白php为什么不删除token, 难道用来链路跟踪? 但是客户端id也被更新了, 没有存在的意义了
 | 
			
		||||
				err := tx.Where("token = ?", token).Update("customer_id", 0).Error
 | 
			
		||||
				err := tx.Where("token = ?", *token.Token).Update("customer_id", 0).Error
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					if errors.Is(err, gorm.ErrRecordNotFound) {
 | 
			
		||||
						return fmt.Errorf("tokens 查询出来, 自身都不存在, 疑似出了什么错误2")
 | 
			
		||||
 | 
			
		||||
@ -97,7 +97,7 @@ func BaseGetToken(ctx *ActionContext[BaseGetTokenParam]) (resp *basic.Response)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = modelToken.InsertToken(tokenItem)
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		log.Println(*tokenItem.Token)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return resp.ErrorErr(1, err)
 | 
			
		||||
		}
 | 
			
		||||
@ -342,7 +342,6 @@ func AccountLoginWithEmailPassword(ctx *ActionContext[AccountLoginWithEmailPassw
 | 
			
		||||
		return resp.ErrorErr(1, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Println(ctx.Localize(translator.AccountNotRegistered))
 | 
			
		||||
	if customer == nil {
 | 
			
		||||
		return resp.ErrorTrCode(ctx, translator.AccountNotRegistered)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,8 @@ import (
 | 
			
		||||
	"github.com/iapologizewhenimwrong/Vestmore_GO/utils/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var respLog = log.New(0)
 | 
			
		||||
 | 
			
		||||
// 全局返回的结构体
 | 
			
		||||
type Response struct {
 | 
			
		||||
	Data      interface{} `json:"data"`
 | 
			
		||||
@ -25,7 +27,7 @@ func (resp *Response) Error(errcode *ErrorCode, Data ...interface{}) *Response {
 | 
			
		||||
	resp.ErrorText = errcode.Message
 | 
			
		||||
	resp.IsSuccess = false
 | 
			
		||||
	resp.setData(Data)
 | 
			
		||||
	log.Error(resp.ErrorText)
 | 
			
		||||
	respLog.Error(resp.ErrorText)
 | 
			
		||||
	return resp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -38,7 +40,7 @@ func (resp *Response) ErrorErr(Code int, err error, Data ...interface{}) *Respon
 | 
			
		||||
	resp.IsSuccess = false
 | 
			
		||||
	resp.setData(Data)
 | 
			
		||||
 | 
			
		||||
	log.Error(resp.ErrorText)
 | 
			
		||||
	respLog.Error(resp.ErrorText)
 | 
			
		||||
	return resp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -50,7 +52,7 @@ func (resp *Response) ErrorMsg(Code int, Message string, Data ...interface{}) *R
 | 
			
		||||
	resp.ErrorText = Message
 | 
			
		||||
	resp.IsSuccess = false
 | 
			
		||||
	resp.setData(Data)
 | 
			
		||||
	log.Error(resp.ErrorText)
 | 
			
		||||
	respLog.Error(resp.ErrorText)
 | 
			
		||||
	return resp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,6 @@ import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
@ -14,93 +13,50 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type levelSkip struct {
 | 
			
		||||
	SkipLogrus int
 | 
			
		||||
	SkipBasic  int
 | 
			
		||||
	Skip int
 | 
			
		||||
	Once sync.Once
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// JSONFormatter formats logs into parsable json
 | 
			
		||||
type JSONFormatter struct {
 | 
			
		||||
	skip []*levelSkip
 | 
			
		||||
	once sync.Once
 | 
			
		||||
	diffSkip int
 | 
			
		||||
	skip     []*levelSkip
 | 
			
		||||
	once     sync.Once
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Format renders a single log entry
 | 
			
		||||
func (h *JSONFormatter) Format(e *logrus.Entry) ([]byte, error) {
 | 
			
		||||
 | 
			
		||||
	skipOnce := h.skip[int(e.Level)]
 | 
			
		||||
 | 
			
		||||
	if skipOnce.SkipLogrus == 0 {
 | 
			
		||||
		var skipLogrus OpenClose
 | 
			
		||||
 | 
			
		||||
		for i := 4; i < 50; i++ {
 | 
			
		||||
	skipOnce.Once.Do(func() {
 | 
			
		||||
		for i := 4; i < 100; i++ {
 | 
			
		||||
			// log.Println(i)
 | 
			
		||||
			if pc, file, line, ok := runtime.Caller(i); ok {
 | 
			
		||||
			if pc, _, _, ok := runtime.Caller(i); ok {
 | 
			
		||||
				funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
				log.Println(funcStruct.Name(), file, line)
 | 
			
		||||
 | 
			
		||||
				skipLogrus.OpenFunc(func() bool {
 | 
			
		||||
					return strings.Contains(funcStruct.Name(), "github.com/sirupsen/logrus.")
 | 
			
		||||
				}, func() {
 | 
			
		||||
 | 
			
		||||
					// skip = i
 | 
			
		||||
					skipOnce.SkipLogrus = i
 | 
			
		||||
					i = 10000
 | 
			
		||||
				})
 | 
			
		||||
 | 
			
		||||
				// log.Println(funcStruct.Name(), file, line)
 | 
			
		||||
				if !strings.Contains(funcStruct.Name(), "github.com/sirupsen/logrus.") {
 | 
			
		||||
					skipOnce.Skip++
 | 
			
		||||
					if skipOnce.Skip >= 2 {
 | 
			
		||||
						skipOnce.Skip = i - 3
 | 
			
		||||
						break
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if skipOnce.SkipBasic == 0 {
 | 
			
		||||
		var skipBasic OpenClose
 | 
			
		||||
		for i := 4; i < 50; i++ {
 | 
			
		||||
			// log.Println(i)
 | 
			
		||||
			if pc, file, line, ok := runtime.Caller(i); ok {
 | 
			
		||||
				funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
				log.Println(funcStruct.Name(), file, line)
 | 
			
		||||
 | 
			
		||||
				skipBasic.OpenFunc(func() bool {
 | 
			
		||||
					return strings.Contains(funcStruct.Name(), "basic.(*Response).")
 | 
			
		||||
				}, func() {
 | 
			
		||||
					skipOnce.SkipBasic = i + 1
 | 
			
		||||
				})
 | 
			
		||||
			} else {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	var fileinfo string
 | 
			
		||||
	if pc, _, _, ok := runtime.Caller(skipOnce.SkipBasic - 1); ok {
 | 
			
		||||
		funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
		log.Println(funcStruct.Name())
 | 
			
		||||
		if strings.Contains(funcStruct.Name(), "basic.(*Response).") {
 | 
			
		||||
			if _, file, line, ok := runtime.Caller(skipOnce.SkipBasic); ok {
 | 
			
		||||
				if e.Level == logrus.InfoLevel {
 | 
			
		||||
					fileinfo = fmt.Sprintf("%s:%d", file, line)
 | 
			
		||||
				} else {
 | 
			
		||||
					ps := strings.Split(file, "/")
 | 
			
		||||
					// ps = ps[len(ps)-4:]
 | 
			
		||||
					fileinfo = fmt.Sprintf("%s:%d", strings.Join(ps, "/"), line)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
	if _, file, line, ok := runtime.Caller(skipOnce.Skip + h.diffSkip); ok {
 | 
			
		||||
		if e.Level == logrus.InfoLevel {
 | 
			
		||||
			fileinfo = fmt.Sprintf("%s:%d", file, line)
 | 
			
		||||
		} else {
 | 
			
		||||
			ps := strings.Split(file, "/")
 | 
			
		||||
			fileinfo = fmt.Sprintf("%s:%d", strings.Join(ps, "/"), line)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if fileinfo != "" {
 | 
			
		||||
		if _, file, line, ok := runtime.Caller(skipOnce.SkipLogrus); ok {
 | 
			
		||||
			if e.Level == logrus.InfoLevel {
 | 
			
		||||
				fileinfo = fmt.Sprintf("%s:%d", file, line)
 | 
			
		||||
			} else {
 | 
			
		||||
				ps := strings.Split(file, "/")
 | 
			
		||||
				// ps = ps[len(ps)-4:]
 | 
			
		||||
				fileinfo = fmt.Sprintf("%s:%d", strings.Join(ps, "/"), line)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var Data map[string]any = make(map[string]any, 4)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										166
									
								
								utils/log/log.go
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								utils/log/log.go
									
									
									
									
									
								
							@ -12,31 +12,38 @@ import (
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var l *logrus.Logger
 | 
			
		||||
var dlog *logrus.Logger
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	l = logrus.New()
 | 
			
		||||
	dlog = New(0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func New(skip int) *logrus.Logger {
 | 
			
		||||
	myl := logrus.New()
 | 
			
		||||
 | 
			
		||||
	// 配置 Logstash 作为输出
 | 
			
		||||
 | 
			
		||||
	l.AddHook(NewUTCTimeHook())
 | 
			
		||||
	myl.AddHook(NewUTCTimeHook())
 | 
			
		||||
	jf := &JSONFormatter{
 | 
			
		||||
		skip: make([]*levelSkip, len(logrus.AllLevels)),
 | 
			
		||||
		skip:     make([]*levelSkip, len(logrus.AllLevels)),
 | 
			
		||||
		diffSkip: skip,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i := range jf.skip {
 | 
			
		||||
		jf.skip[i] = &levelSkip{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	l.Formatter = jf
 | 
			
		||||
	myl.Formatter = jf
 | 
			
		||||
	myl.SetReportCaller(true)
 | 
			
		||||
 | 
			
		||||
	// l.AddHook(&SkipHook{})
 | 
			
		||||
 | 
			
		||||
	l.SetReportCaller(true)
 | 
			
		||||
	if dlog != nil {
 | 
			
		||||
		myl.SetOutput(dlog.Out)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return myl
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SkipHook struct {
 | 
			
		||||
	autoSkip  int
 | 
			
		||||
	Formatter func(*logrus.Hook, *logrus.Entry) error
 | 
			
		||||
	once      sync.Once
 | 
			
		||||
}
 | 
			
		||||
@ -45,61 +52,28 @@ func (h *SkipHook) Levels() []logrus.Level {
 | 
			
		||||
	return logrus.AllLevels
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OpenClose 开闭空间
 | 
			
		||||
type OpenClose struct {
 | 
			
		||||
	Open  bool
 | 
			
		||||
	Close bool
 | 
			
		||||
	Skip  int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (oc *OpenClose) OpenFunc(opendo func() bool, closedo func()) {
 | 
			
		||||
 | 
			
		||||
	if oc.Open && oc.Close {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if opendo() {
 | 
			
		||||
		if !oc.Open {
 | 
			
		||||
			oc.Open = true
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if oc.Open && !oc.Close {
 | 
			
		||||
			oc.Close = true
 | 
			
		||||
			closedo()
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (h *SkipHook) Fire(e *logrus.Entry) error {
 | 
			
		||||
 | 
			
		||||
	var skipLogrus, skipBasic OpenClose
 | 
			
		||||
	var skip int
 | 
			
		||||
	for i := 4; i < 25; i++ {
 | 
			
		||||
		log.Println(i)
 | 
			
		||||
		if pc, file, line, ok := runtime.Caller(i); ok {
 | 
			
		||||
			funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
			log.Println(funcStruct.Name(), file, line)
 | 
			
		||||
 | 
			
		||||
			skipLogrus.OpenFunc(func() bool {
 | 
			
		||||
				return strings.Contains(funcStruct.Name(), "github.com/sirupsen/logrus.")
 | 
			
		||||
			}, func() {
 | 
			
		||||
				skip = i + 1
 | 
			
		||||
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			skipBasic.OpenFunc(func() bool {
 | 
			
		||||
				return strings.Contains(funcStruct.Name(), "basic.(*Response).")
 | 
			
		||||
			}, func() {
 | 
			
		||||
				skip = i
 | 
			
		||||
				i = 100
 | 
			
		||||
			})
 | 
			
		||||
	h.once.Do(func() {
 | 
			
		||||
		for i := 4; i < 100; i++ {
 | 
			
		||||
			log.Println(i)
 | 
			
		||||
			if pc, file, line, ok := runtime.Caller(i); ok {
 | 
			
		||||
				funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
				log.Println(funcStruct.Name(), file, line)
 | 
			
		||||
				if !strings.Contains(funcStruct.Name(), "github.com/sirupsen/logrus.") {
 | 
			
		||||
					h.autoSkip++
 | 
			
		||||
					if h.autoSkip >= 2 {
 | 
			
		||||
						h.autoSkip = i - 3
 | 
			
		||||
						break
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if _, file, line, ok := runtime.Caller(skip); ok {
 | 
			
		||||
	if _, file, line, ok := runtime.Caller(h.autoSkip); ok {
 | 
			
		||||
		// funcStruct := runtime.FuncForPC(pc)
 | 
			
		||||
		// log.Println(file, line, funcStruct.Name())
 | 
			
		||||
		// funcName := funcStruct.Name()
 | 
			
		||||
@ -131,154 +105,154 @@ func (hook *UTCTimeHook) Fire(entry *logrus.Entry) error {
 | 
			
		||||
// this new returned entry.
 | 
			
		||||
// If you want multiple fields, use `WithFields`.
 | 
			
		||||
func WithField(key string, value interface{}) *logrus.Entry {
 | 
			
		||||
	return l.WithField(key, value)
 | 
			
		||||
	return dlog.WithField(key, value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Adds a struct of fields to the log entry. All it does is call `WithField` for
 | 
			
		||||
// each `Field`.
 | 
			
		||||
func WithFields(fields logrus.Fields) *logrus.Entry {
 | 
			
		||||
	return l.WithFields(fields)
 | 
			
		||||
	return dlog.WithFields(fields)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Add an error as single field to the log entry.  All it does is call
 | 
			
		||||
// `WithError` for the given `error`.
 | 
			
		||||
func WithError(err error) *logrus.Entry {
 | 
			
		||||
 | 
			
		||||
	return l.WithError(err)
 | 
			
		||||
	return dlog.WithError(err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Add a context to the log entry.
 | 
			
		||||
func WithContext(ctx context.Context) *logrus.Entry {
 | 
			
		||||
 | 
			
		||||
	return l.WithContext(ctx)
 | 
			
		||||
	return dlog.WithContext(ctx)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Overrides the time of the log entry.
 | 
			
		||||
func WithTime(t time.Time) *logrus.Entry {
 | 
			
		||||
 | 
			
		||||
	return l.WithTime(t)
 | 
			
		||||
	return dlog.WithTime(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Logf(level logrus.Level, format string, args ...interface{}) {
 | 
			
		||||
	l.Logf(level, format, args...)
 | 
			
		||||
	dlog.Logf(level, format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Tracef(format string, args ...interface{}) {
 | 
			
		||||
	l.Tracef(format, args...)
 | 
			
		||||
	dlog.Tracef(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Debugf(format string, args ...interface{}) {
 | 
			
		||||
	l.Debugf(format, args...)
 | 
			
		||||
	dlog.Debugf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Infof(format string, args ...interface{}) {
 | 
			
		||||
	l.Infof(format, args...)
 | 
			
		||||
	dlog.Infof(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Printf(format string, args ...interface{}) {
 | 
			
		||||
	l.Printf(format, args...)
 | 
			
		||||
	dlog.Printf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warnf(format string, args ...interface{}) {
 | 
			
		||||
	l.Warnf(format, args...)
 | 
			
		||||
	dlog.Warnf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warningf(format string, args ...interface{}) {
 | 
			
		||||
	l.Warningf(format, args...)
 | 
			
		||||
	dlog.Warningf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Errorf(format string, args ...interface{}) {
 | 
			
		||||
	l.Errorf(format, args...)
 | 
			
		||||
	dlog.Errorf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Fatalf(format string, args ...interface{}) {
 | 
			
		||||
	l.Fatalf(format, args...)
 | 
			
		||||
	dlog.Fatalf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Panicf(format string, args ...interface{}) {
 | 
			
		||||
	l.Panicf(format, args...)
 | 
			
		||||
	dlog.Panicf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Log(level logrus.Level, args ...interface{}) {
 | 
			
		||||
	l.Log(level, args...)
 | 
			
		||||
	dlog.Log(level, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Trace(args ...interface{}) {
 | 
			
		||||
	l.Trace(args...)
 | 
			
		||||
	dlog.Trace(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Debug(args ...interface{}) {
 | 
			
		||||
	l.Debug(args...)
 | 
			
		||||
	dlog.Debug(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Info(args ...interface{}) {
 | 
			
		||||
	l.Info(args...)
 | 
			
		||||
	dlog.Info(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Print(args ...interface{}) {
 | 
			
		||||
	l.Print(args...)
 | 
			
		||||
	dlog.Print(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warn(args ...interface{}) {
 | 
			
		||||
	l.Warn(args...)
 | 
			
		||||
	dlog.Warn(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warning(args ...interface{}) {
 | 
			
		||||
	l.Warning(args...)
 | 
			
		||||
	dlog.Warning(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Error(args ...interface{}) {
 | 
			
		||||
	l.Error(args...)
 | 
			
		||||
	dlog.Error(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Fatal(args ...interface{}) {
 | 
			
		||||
	l.Fatal(args...)
 | 
			
		||||
	dlog.Fatal(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Panic(args ...interface{}) {
 | 
			
		||||
	l.Panic(args...)
 | 
			
		||||
	dlog.Panic(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Logln(level logrus.Level, args ...interface{}) {
 | 
			
		||||
	l.Logln(level, args...)
 | 
			
		||||
	dlog.Logln(level, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Traceln(args ...interface{}) {
 | 
			
		||||
	l.Traceln(args...)
 | 
			
		||||
	dlog.Traceln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Debugln(args ...interface{}) {
 | 
			
		||||
	l.Debugln(args...)
 | 
			
		||||
	dlog.Debugln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Infoln(args ...interface{}) {
 | 
			
		||||
	l.Infoln(args...)
 | 
			
		||||
	dlog.Infoln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Println(args ...interface{}) {
 | 
			
		||||
	l.Println(args...)
 | 
			
		||||
	dlog.Println(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warnln(args ...interface{}) {
 | 
			
		||||
	l.Warnln(args...)
 | 
			
		||||
	dlog.Warnln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Warningln(args ...interface{}) {
 | 
			
		||||
	l.Warningln(args...)
 | 
			
		||||
	dlog.Warningln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Errorln(args ...interface{}) {
 | 
			
		||||
	l.Errorln(args...)
 | 
			
		||||
	dlog.Errorln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Fatalln(args ...interface{}) {
 | 
			
		||||
	l.Fatalln(args...)
 | 
			
		||||
	dlog.Fatalln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Panicln(args ...interface{}) {
 | 
			
		||||
	l.Panicln(args...)
 | 
			
		||||
	dlog.Panicln(args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Exit(code int) {
 | 
			
		||||
	l.Exit(code)
 | 
			
		||||
	dlog.Exit(code)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ func DebuglnTrackTime(do func(), fargs ...interface{}) {
 | 
			
		||||
	var out []interface{}
 | 
			
		||||
	out = append(out, t)
 | 
			
		||||
	out = append(out, fargs...)
 | 
			
		||||
	l.Debugln(out...)
 | 
			
		||||
	dlog.Debugln(out...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func InfolnTrackTime(do func(), fargs ...interface{}) {
 | 
			
		||||
@ -24,5 +24,5 @@ func InfolnTrackTime(do func(), fargs ...interface{}) {
 | 
			
		||||
	var out []interface{}
 | 
			
		||||
	out = append(out, t)
 | 
			
		||||
	out = append(out, fargs...)
 | 
			
		||||
	l.Infoln(out...)
 | 
			
		||||
	dlog.Infoln(out...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user