otto 2 years ago
parent
commit
9d7230a491
  1. 55
      file.go
  2. 19
      file_test.go
  3. 19
      go.mod
  4. 65
      go.sum
  5. 54
      log.go
  6. 12
      log_test.go
  7. 19
      logger.go
  8. 29
      request/req_id.go
  9. 7
      request/req_id_test.go
  10. 10
      tracing/tracing.go

55
file.go

@ -0,0 +1,55 @@
package log
import (
"bufio"
"fmt"
"os"
"strings"
"sync"
"time"
)
//type path struct {
// w *bufio.Writer
//}
var (
mux sync.Mutex
w *bufio.Writer
logChan chan *LoggerData
)
func to(path string, data *LoggerData) {
mux.Lock()
defer mux.Unlock()
if logChan == nil {
logChan = make(chan *LoggerData, 10)
}
logChan <- data
if w == nil {
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("文件打开失败", err)
return
}
//及时关闭file句柄
defer file.Close()
w = bufio.NewWriter(file)
go func() {
write()
}()
}
}
func write() {
for {
select {
case l := <-logChan:
w.WriteString(fmt.Sprintf("[%s] [%s] %s \n %s =========================================== \n", l.Level, l.DateTime, l.Message, strings.Join(l.File, "\n")))
case <-time.After(time.Second * 5):
fmt.Println("file flush")
w.Flush()
return
}
}
}

19
file_test.go

@ -0,0 +1,19 @@
package log
import (
"testing"
"time"
)
func TestTo(t *testing.T) {
to("./log.txt", &LoggerData{
Level: LevelDebug,
ReqId: "2da2u32u131j",
DateTime: "2022-11-15 20:20:20",
Message: "debug file log",
File: []string{
"./file.go",
},
})
time.Sleep(time.Second * 10)
}

19
go.mod

@ -3,23 +3,24 @@ module git.gz.internal.jumaiyx.cn/pkg/log
go 1.18
require (
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010091605-30b3a226df59
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c
github.com/go-kratos/kratos/v2 v2.5.1
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221116075516-daa6afa5375f
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221116062241-247238efaf1d
github.com/go-kratos/kratos/v2 v2.5.3
github.com/segmentio/kafka-go v0.4.38
)
require (
github.com/go-playground/form/v4 v4.2.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/klauspost/compress v1.15.11 // indirect
github.com/klauspost/compress v1.15.12 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/pierrec/lz4/v4 v4.1.17 // indirect
github.com/segmentio/kafka-go v0.4.35 // indirect
github.com/xdg/scram v1.0.5 // indirect
github.com/xdg/stringprep v1.0.3 // indirect
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/genproto v0.0.0-20220524023933-508584e28198 // indirect
google.golang.org/grpc v1.46.2 // indirect
golang.org/x/crypto v0.2.0 // indirect
golang.org/x/text v0.4.0 // indirect
google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91 // indirect
google.golang.org/grpc v1.49.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

65
go.sum

@ -1,19 +1,15 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20220923075051-1397173cc226 h1:GUf3qxNgqFtnG9GXFIiAVVV4ujSBYJ7qpBZiYvlQ6hU=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20220923075051-1397173cc226/go.mod h1:Crg7PRCYXQcXVkBzkS/7sOGTmtT19L0KaBu60CxJBDc=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010084411-2f15b6841d6a h1:4jEklU7/jGnqUlb30K+HtamO3wSqpFpblVaeSjr+dbs=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010084411-2f15b6841d6a/go.mod h1:Crg7PRCYXQcXVkBzkS/7sOGTmtT19L0KaBu60CxJBDc=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010085322-8fe2efe36eda h1:XgIXEERgyIYA7TkLKj4zHIOsQQI2UMrDNZKJsAxA5qg=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010085322-8fe2efe36eda/go.mod h1:Crg7PRCYXQcXVkBzkS/7sOGTmtT19L0KaBu60CxJBDc=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010091605-30b3a226df59 h1:JfnUYqpVoeoQ9wlf0/U9i9oFx34X3CCJUczLKKmTgyc=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221010091605-30b3a226df59/go.mod h1:Crg7PRCYXQcXVkBzkS/7sOGTmtT19L0KaBu60CxJBDc=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20220923080003-63b18d8bdb3a h1:aCz8Rjo8UcxzArrSZw+xi74OTclQcnlpIYCZ4Eyh6Ag=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20220923080003-63b18d8bdb3a/go.mod h1:TaYcVEqFCowShw3Ued9EXGgZ0GY3WgA+tEOOLTVywNo=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085146-bdad343ad95f h1:1YeTnGo+t6FHvOARQKq1H/q3hh4pXi/QK862DRTrRK0=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085146-bdad343ad95f/go.mod h1:TaYcVEqFCowShw3Ued9EXGgZ0GY3WgA+tEOOLTVywNo=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221115114719-9f5cb4d203e4 h1:xVVoqDbom6Hkf+NaeMv3MndWswczy6HYK1GeChlFdCk=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221115114719-9f5cb4d203e4/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221116070209-e279a2b209bd h1:tDzOAxvaW/HIoEFnpWO9NJxzeVQc9vMk2AI5M1bzokU=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221116070209-e279a2b209bd/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221116075516-daa6afa5375f h1:eAJiRUUl1knH75VLTb8mWa7N4xcG8y9A7/QDrDbAPjM=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221116075516-daa6afa5375f/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c h1:C/1lKDrxi2xM2BPGG843kEcmZivhOdEr7Eg86bDIBVY=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c/go.mod h1:TujX5RTIJ6vz8QYG1R6JwssH5DHGrAVpdGBaWG+uVqY=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221116062241-247238efaf1d h1:KmAExHlvOHnbwV0clZNsZ0vurWo2R99RlBh58tLTs+k=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221116062241-247238efaf1d/go.mod h1:rspqWOZacckvYwl1M6tikwkdsOlorUmt3CylJ3cGQV8=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@ -26,6 +22,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -38,10 +35,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-kratos/aegis v0.1.2/go.mod h1:jYeSQ3Gesba478zEnujOiG5QdsyF3Xk/8owFUeKcHxw=
github.com/go-kratos/kratos/v2 v2.5.0 h1:lHpfp/AodxpRM9j8b894EsGTwsL40X8WMjNeJ6ChOqQ=
github.com/go-kratos/kratos/v2 v2.5.0/go.mod h1:5acyLj4EgY428AJnZl2EwCrMV1OVlttQFBum+SghMiA=
github.com/go-kratos/kratos/v2 v2.5.1 h1:diqO22hKt4EWnCCYoZ1V4syiYKY1Lkccao3BhBX47uQ=
github.com/go-kratos/kratos/v2 v2.5.1/go.mod h1:5acyLj4EgY428AJnZl2EwCrMV1OVlttQFBum+SghMiA=
github.com/go-kratos/kratos/v2 v2.5.3 h1:v3F0fIFXh4HJgXprHKPGhRaobggolwPAbaBAjR+wC+Q=
github.com/go-kratos/kratos/v2 v2.5.3/go.mod h1:5acyLj4EgY428AJnZl2EwCrMV1OVlttQFBum+SghMiA=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
@ -81,22 +76,21 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.15.10 h1:Ai8UzuomSCDw90e1qNMtb15msBXsNpH6gzkkENQNcJo=
github.com/klauspost/compress v1.15.10/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.16 h1:kQPfno+wyx6C5572ABwV+Uo3pDFzQ7yhyGchSyRda0c=
github.com/pierrec/lz4/v4 v4.1.16/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc=
github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/segmentio/kafka-go v0.4.35 h1:TAsQ7q1SjS39PcFvU0zDJhCuVAxHomy7xOAfbdSuhzs=
github.com/segmentio/kafka-go v0.4.35/go.mod h1:GAjxBQJdQMB5zfNA21AhpaqOB2Mu+w3De4ni3Gbm8y0=
github.com/segmentio/kafka-go v0.4.38 h1:iQdOBbUSdfuYlFpvjuALgj7N6DrdPA0HfB4AhREOdtg=
github.com/segmentio/kafka-go v0.4.38/go.mod h1:ikyuGon/60MN/vXFgykf7Zm8P5Be49gJU6vezwjnnhU=
github.com/shirou/gopsutil/v3 v3.21.8/go.mod h1:YWp/H8Qs5fVmf17v7JNZzA0mPJ+mS2e9JdiUF9LlKzQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@ -117,10 +111,9 @@ go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b h1:huxqepDufQpLLIRXiVkTvnxrzJlpwmIWAObmcCcUFr0=
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.2.0 h1:BRXPfhNivWL5Yq0BGQ39a2sW6t44aODpfxkWjYdzewE=
golang.org/x/crypto v0.2.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@ -135,8 +128,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220706163947-c90051bbdb60 h1:8NSylCMxLW4JvserAndSgFL7aPli6A68yf0bYFTcWCM=
golang.org/x/net v0.0.0-20220706163947-c90051bbdb60/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -159,16 +152,17 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@ -184,8 +178,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220524023933-508584e28198 h1:a1g7i05I2vUwq5eYrmxBJy6rPbw/yo7WzzwPJmcC0P4=
google.golang.org/genproto v0.0.0-20220524023933-508584e28198/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91 h1:Ezh2cpcnP5Rq60sLensUsFnxh7P6513NLvNtCm9iyJ4=
google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@ -193,8 +187,9 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.46.2 h1:u+MLGgVf7vRdjEYZ8wDFhAVNmhkbJ5hmrA1LMWK1CAQ=
google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw=
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@ -210,8 +205,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

54
log.go

@ -7,6 +7,8 @@ import (
"git.gz.internal.jumaiyx.cn/jm/jmproto/conf"
"git.gz.internal.jumaiyx.cn/pkg/kafka"
klog "git.gz.internal.jumaiyx.cn/pkg/log/klog"
"git.gz.internal.jumaiyx.cn/pkg/log/request"
"github.com/go-kratos/kratos/v2/metadata"
"os"
"runtime"
"strconv"
@ -20,7 +22,10 @@ const (
LevelDebug = "DEBUG"
LevelInfo = "INFO"
LevelPath = "PATH"
LevelPanic = "PANIC"
logfile = "./log/log.log"
)
type KLogger interface {
@ -38,6 +43,17 @@ type LoggerData struct {
//Line int `json:"line"`
}
type SystemLog struct {
TraceId int `json:"trace_id"`
SpanId int `json:"span_id"`
ReqId string `json:"req_id"`
ServerName string `json:"server_name"`
Level string `json:"level"`
Message string `json:"msg"`
CreateAt string `json:"create_at"`
Files []string `json:"files"`
}
type klogger struct {
level string
pool *sync.Pool
@ -45,6 +61,7 @@ type klogger struct {
prefix []interface{}
hasValuer bool
ctx context.Context
path string
}
func NewKLogger(c *conf.Log) klog.Logger {
@ -53,6 +70,17 @@ func NewKLogger(c *conf.Log) klog.Logger {
} else {
c.Level = strings.ToUpper(c.Level)
}
switch c.Level {
case "":
c.Level = LevelDebug
case LevelPath:
if c.Path == "" {
c.Path = logfile
}
default:
c.Level = strings.ToUpper(c.Level)
}
return &klogger{
level: c.Level,
pool: &sync.Pool{
@ -63,6 +91,7 @@ func NewKLogger(c *conf.Log) klog.Logger {
return nil
},
},
path: c.Path,
}
}
@ -71,11 +100,11 @@ func (l *klogger) Log(level klog.Level, keyvals ...interface{}) error {
var reqId string
if l.ctx != nil {
if l.ctx.Value(ReqId) != nil {
reqId = l.ctx.Value(ReqId).(string)
if md, ok := metadata.FromServerContext(l.ctx); ok {
reqId = md.Get(request.ContextReqId)
}
} else {
l.ctx = context.Background()
l.ctx = request.SetReqId(context.TODO())
}
if len(keyvals) == 0 {
return nil
@ -84,14 +113,13 @@ func (l *klogger) Log(level klog.Level, keyvals ...interface{}) error {
keyvals = append(keyvals, "KEYVALS UNPAIRED")
}
files := fine()
data := &LoggerData{
ReqId: reqId,
DateTime: time.Now().Format("2006-01-02 15:04:05"),
Level: level.String(),
File: files,
Server: serviceName(),
data := &SystemLog{
ReqId: reqId,
CreateAt: time.Now().Format("2006-01-02 15:04:05"),
Level: level.String(),
Files: files,
ServerName: serviceName(),
}
for i := 0; i < len(keyvals); i += 2 {
s, ok := keyvals[i+1].(string)
if ok {
@ -102,13 +130,15 @@ func (l *klogger) Log(level klog.Level, keyvals ...interface{}) error {
}
}
if l.level == LevelDebug {
fmt.Printf("[%s] [%s] %s \n", data.DateTime, data.Level, data.Message)
fmt.Printf("[%s] [%s] req_id:[%s] %s \n", data.CreateAt, data.Level, data.ReqId, data.Message)
}
if l.level == LevelPanic {
fmt.Printf("[%s] [%s] %s \n %s \n", data.DateTime, data.Level, data.Message, strings.Join(data.File, "\n "+mkdir()+"/"))
fmt.Printf("[%s] [%s] %s \n %s \n", data.CreateAt, data.Level, data.Message, strings.Join(data.Files, "\n "+mkdir()+"/"))
}
if l.level == LevelPath {
}
if l.level == LevelInfo {
go func() {
sender := l.pool.Get().(*kafka.Sender)

12
log_test.go

@ -18,19 +18,17 @@ func TestNewKLogger(t *testing.T) {
//ctx = context.WithValue(ctx, "reqId", "dadadada")
l := NewLogger(&conf.Log{
Level: LevelDebug,
Level: LevelInfo,
Kafka: &conf.Kafka{
Addr: []string{"127.0.0.1:9092"},
},
Debug: true,
})
//l := DefaultLogger()
l.WithContext(ctx)
//t.Log()
//ll.Ddw()
err := errors.New("err test")
l.Errorf("测试test:%v", err)
l.Errorf("测试test2:%v", err)
l.Debug("2222", "222", "333", "444", "555")
l.Debug("2222", "222", "333", "444", "555")
time.Sleep(1 * time.Second)
l.Errorf("11测试test:%v", err)
l.Errorf("22测试test2:%v", err)
time.Sleep(5 * time.Second)
}

19
logger.go

@ -4,11 +4,12 @@ import (
"context"
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"git.gz.internal.jumaiyx.cn/jm/jmproto/conf"
klog "git.gz.internal.jumaiyx.cn/pkg/log/klog"
"git.gz.internal.jumaiyx.cn/pkg/log/request"
"github.com/go-kratos/kratos/v2/errors"
"github.com/go-kratos/kratos/v2/metadata"
"github.com/go-kratos/kratos/v2/middleware"
"github.com/go-kratos/kratos/v2/transport"
"log"
@ -50,7 +51,7 @@ type Logger interface {
Fatalw(keyvals ...interface{})
}
// NewKafkaLogger new a logger with writer.
// NewLogger new a logger with writer.
func NewLogger(c *conf.Log, opts ...klog.Option) Logger {
l := NewKLogger(c)
return &logger{
@ -61,7 +62,7 @@ func NewLogger(c *conf.Log, opts ...klog.Option) Logger {
func DefaultLogger() Logger {
l := NewKLogger(&conf.Log{
Debug: true,
Level: LevelDebug,
})
return &logger{
logger: l,
@ -73,12 +74,14 @@ func DefaultLogger() Logger {
func (l *logger) Server() middleware.Middleware {
return func(handler middleware.Handler) middleware.Handler {
return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
if ctx.Value(ReqId) == nil {
str, _ := json.Marshal(ctx)
id := Get16MD5Encode(string(str) + time.Now().String())
ctx = context.WithValue(ctx, ReqId, id)
var reqId string
if md, ok := metadata.FromServerContext(ctx); ok {
reqId = md.Get(request.ContextReqId)
} else {
ctx, reqId = request.SetReqReturnId(ctx)
}
log.Printf("=====reqId=====:%s\n", ctx.Value(ReqId))
log.Printf("=====reqId=====:%s\n", reqId)
l.WithContext(ctx)
var (
code int32

29
request/req_id.go

@ -0,0 +1,29 @@
package request
import (
"context"
"encoding/hex"
"github.com/go-kratos/kratos/v2/metadata"
"math/rand"
"time"
)
const (
ContextReqId = "x-md-global-req-id"
)
func SetReqId(ctx context.Context) context.Context {
return metadata.AppendToClientContext(ctx, ContextReqId, genReqIdMd5())
}
func SetReqReturnId(ctx context.Context) (context.Context, string) {
id := genReqIdMd5()
return metadata.AppendToClientContext(ctx, ContextReqId, id), id
}
func genReqIdMd5() string {
rand.Seed(time.Now().UnixNano())
result := make([]byte, 16/2)
rand.Read(result)
return hex.EncodeToString(result)
}

7
request/req_id_test.go

@ -0,0 +1,7 @@
package request
import "testing"
func TestSetReqId(t *testing.T) {
t.Log(genReqIdMd5())
}

10
tracing/tracing.go

@ -0,0 +1,10 @@
package tracing
const (
TraceId = "trace.id"
SpanId = "span.id"
)
func Create() {
}
Loading…
Cancel
Save