Skip to content

Commit

Permalink
feat: add logger
Browse files Browse the repository at this point in the history
  • Loading branch information
crispgm committed Jan 3, 2024
1 parent fc265bd commit bbfeeb3
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 15 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,13 @@ middleware.WithTokenVerfication("asodjiaoijoi121iuhiaud")
middleware.WithEncryption("1231asda")
```

### Logger

`lark-gin` implements and uses `lark.LogWrapper`. You may set your own logger:
```go
middleware.SetLogger(yourOwnLogger)
```

## About

Copyright (c) go-lark Developers, 2018-2024.
5 changes: 2 additions & 3 deletions card.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"crypto/sha1"
"encoding/json"
"fmt"
"log"
"strings"

"github.com/gin-gonic/gin"
Expand Down Expand Up @@ -35,7 +34,7 @@ func (opt LarkMiddleware) LarkCardHandler() gin.HandlerFunc {
var event lark.EventCardCallback
err = json.Unmarshal(inputBody, &event)
if err != nil {
log.Println(err)
opt.logger.Log(c, lark.LogLevelWarn, fmt.Sprintf("Unmarshal JSON error: %v", err))
return
}
if opt.enableTokenVerification {
Expand All @@ -44,7 +43,7 @@ func (opt LarkMiddleware) LarkCardHandler() gin.HandlerFunc {
signature := c.Request.Header.Get("X-Lark-Signature")
token := opt.cardSignature(nonce, timestamp, string(body), opt.verificationToken)
if signature != token {
log.Println("Token verification failed")
opt.logger.Log(c, lark.LogLevelError, "Token verification failed")
return
}
}
Expand Down
6 changes: 3 additions & 3 deletions challenge.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package larkgin

import (
"encoding/json"
"log"
"fmt"
"net/http"

"github.com/gin-gonic/gin"
Expand All @@ -26,7 +26,7 @@ func (opt LarkMiddleware) LarkChallengeHandler() gin.HandlerFunc {
if opt.enableEncryption {
decryptedData, err := opt.decodeEncryptedJSON(body)
if err != nil {
log.Println("Decrypt failed:", err)
opt.logger.Log(c, lark.LogLevelError, fmt.Sprintf("Decrypt failed: %v", err))
return
}
inputBody = decryptedData
Expand All @@ -38,7 +38,7 @@ func (opt LarkMiddleware) LarkChallengeHandler() gin.HandlerFunc {
return
}
if challenge.Type == "url_verification" {
log.Println("Handling challenge:", challenge.Challenge)
opt.logger.Log(c, lark.LogLevelInfo, fmt.Sprintf("Handling challenge: %s", challenge.Challenge))
c.AbortWithStatusJSON(http.StatusOK, gin.H{
"challenge": challenge.Challenge,
})
Expand Down
8 changes: 4 additions & 4 deletions event_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package larkgin

import (
"encoding/json"
"log"
"fmt"

"github.com/gin-gonic/gin"
"github.com/go-lark/lark"
Expand Down Expand Up @@ -35,7 +35,7 @@ func (opt LarkMiddleware) LarkMessageHandler() gin.HandlerFunc {
if opt.enableEncryption {
decryptedData, err := opt.decodeEncryptedJSON(body)
if err != nil {
log.Println("Decrypt failed:", err)
opt.logger.Log(c, lark.LogLevelError, fmt.Sprintf("Decrypt failed: %v", err))
return
}
inputBody = decryptedData
Expand All @@ -48,10 +48,10 @@ func (opt LarkMiddleware) LarkMessageHandler() gin.HandlerFunc {
}

if opt.enableTokenVerification && message.Token != opt.verificationToken {
log.Println("Token verification failed")
opt.logger.Log(c, lark.LogLevelError, "Token verification failed")
return
}
log.Println("Handling message:", message.EventType)
opt.logger.Log(c, lark.LogLevelInfo, fmt.Sprintf("Handling message: %s", message.EventType))
c.Set(opt.messageKey, message)
}
}
10 changes: 5 additions & 5 deletions event_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package larkgin

import (
"encoding/json"
"log"
"fmt"

"github.com/gin-gonic/gin"
"github.com/go-lark/lark"
Expand Down Expand Up @@ -33,7 +33,7 @@ func (opt LarkMiddleware) LarkEventHandler() gin.HandlerFunc {
if opt.enableEncryption {
decryptedData, err := opt.decodeEncryptedJSON(body)
if err != nil {
log.Println("Decrypt failed:", err)
opt.logger.Log(c, lark.LogLevelError, fmt.Sprintf("Decrypt failed: %v", err))
return
}
inputBody = decryptedData
Expand All @@ -42,14 +42,14 @@ func (opt LarkMiddleware) LarkEventHandler() gin.HandlerFunc {
var event lark.EventV2
err = json.Unmarshal(inputBody, &event)
if err != nil {
log.Println(err)
opt.logger.Log(c, lark.LogLevelWarn, fmt.Sprintf("Unmarshal JSON error: %v", err))
return
}
if opt.enableTokenVerification && event.Header.Token != opt.verificationToken {
log.Println("Token verification failed")
opt.logger.Log(c, lark.LogLevelError, "Token verification failed")
return
}
log.Println("Handling event:", event.Header.EventType)
opt.logger.Log(c, lark.LogLevelInfo, fmt.Sprintf("Handling event: %s", event.Header.EventType))
c.Set(opt.messageKey, event)
}
}
3 changes: 3 additions & 0 deletions gin.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ const (

// LarkMiddleware .
type LarkMiddleware struct {
logger lark.LogWrapper

messageKey string
cardKey string

Expand All @@ -32,6 +34,7 @@ type LarkMiddleware struct {
// NewLarkMiddleware .
func NewLarkMiddleware() *LarkMiddleware {
return &LarkMiddleware{
logger: initDefaultLogger(),
messageKey: defaultLarkMessageKey,
cardKey: defaultLarkCardKey,
}
Expand Down
32 changes: 32 additions & 0 deletions logger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package larkgin

import (
"context"
"log"
"os"

"github.com/go-lark/lark"
)

// SetLogger set a new logger
func (opt *LarkMiddleware) SetLogger(logger lark.LogWrapper) {
opt.logger = logger
}

const logPrefix = "[go-lark] "

func initDefaultLogger() lark.LogWrapper {
// create a default std logger
logger := stdLogger{
log.New(os.Stderr, logPrefix, log.LstdFlags),
}
return logger
}

type stdLogger struct {
*log.Logger
}

func (sl stdLogger) Log(_ context.Context, level lark.LogLevel, msg string) {
sl.Printf("[%s] %s\n", level, msg)
}

0 comments on commit bbfeeb3

Please sign in to comment.