@@ -19,18 +19,38 @@ package main
1919
2020import (
2121 "context"
22- "fmt"
23- "log"
22+ "io"
23+ "log/slog"
24+ "os"
2425
2526 "github.com/apache/pulsar-client-go/pulsar"
27+ pulsarlog "github.com/apache/pulsar-client-go/pulsar/log"
28+ "gopkg.in/natefinch/lumberjack.v2"
2629)
2730
2831func main () {
29- client , err := pulsar .NewClient (pulsar.ClientOptions {URL : "pulsar://localhost:6650" })
30- if err != nil {
31- log .Fatal (err )
32+ fileLogger := & lumberjack.Logger {
33+ Filename : "/tmp/pulsar-go-sdk.log" ,
34+ MaxSize : 100 ,
35+ MaxBackups : 5 ,
36+ LocalTime : true ,
3237 }
38+ // this multiLogger prints logs to both stdout and fileLogger
39+ // if we only want to print logs to file, just pass fileLogger to slog.NewJSONHandler()
40+ multiLogger := io .MultiWriter (os .Stdout , fileLogger )
41+ logger := slog .New (slog .NewJSONHandler (multiLogger , & slog.HandlerOptions {Level : slog .LevelInfo }))
42+ slog .SetDefault (logger )
3343
44+ client , err := pulsar .NewClient (pulsar.ClientOptions {
45+ URL : "pulsar://localhost:6650" ,
46+ // If we are using a logrus logger or other third-party custom loggers,
47+ // we can skip the above slog logger initialization and pass the logger with its corresponding wrapper here.
48+ Logger : pulsarlog .NewLoggerWithSlog (logger ),
49+ })
50+ if err != nil {
51+ logger .Error ("create client err" , "error" , err )
52+ return
53+ }
3454 defer client .Close ()
3555
3656 consumer , err := client .Subscribe (pulsar.ConsumerOptions {
@@ -39,23 +59,27 @@ func main() {
3959 Type : pulsar .Shared ,
4060 })
4161 if err != nil {
42- log .Fatal (err )
62+ logger .Error ("create consumer err" , "error" , err )
63+ return
4364 }
4465 defer consumer .Close ()
4566
4667 for i := 0 ; i < 10 ; i ++ {
4768 msg , err := consumer .Receive (context .Background ())
4869 if err != nil {
49- log .Fatal (err )
70+ logger .Error ("consumer receive message err" , "error" , err )
71+ return
5072 }
51-
52- fmt .Printf ("Received message msgId: %#v -- content: '%s'\n " ,
53- msg .ID (), string (msg .Payload ()))
54-
73+ logger .Info ("Received message" ,
74+ "msgId" ,
75+ msg .ID ().String (),
76+ "content" ,
77+ string (msg .Payload ()),
78+ )
5579 consumer .Ack (msg )
5680 }
57-
5881 if err := consumer .Unsubscribe (); err != nil {
59- log .Fatal (err )
82+ logger .Error ("consumer unsubscribe err" , "error" , err )
83+ return
6084 }
6185}
0 commit comments