example/producer/custom_logger/with_custom_logger.go (41 lines of code) (raw):
package main
import (
"os"
"time"
sls "github.com/aliyun/aliyun-log-go-sdk"
"github.com/aliyun/aliyun-log-go-sdk/producer"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"google.golang.org/protobuf/proto"
"gopkg.in/natefinch/lumberjack.v2"
)
// README :
// This is a very simple example of creating a producer with custom logger
func main() {
// write to file
writer := &lumberjack.Logger{
Filename: "producer.log",
MaxSize: 100,
MaxBackups: 10,
Compress: false,
}
logger := log.NewLogfmtLogger(writer) // or write to stdout by: logger := log.NewLogfmtLogger(os.Stdout)
// set log level
logger = level.NewFilter(logger, level.AllowInfo())
// add log time and caller info
logger = log.With(logger, "time", log.DefaultTimestampUTC, "caller", log.DefaultCaller)
producerConfig := producer.GetDefaultProducerConfig()
producerConfig.Logger = logger // set producer logger
producerConfig.Endpoint = os.Getenv("Endpoint")
producerConfig.AccessKeyID = os.Getenv("AccessKeyID")
producerConfig.AccessKeySecret = os.Getenv("AccessKeySecret")
producerInstance, err := producer.NewProducer(producerConfig)
if err != nil {
panic(err)
}
producerInstance.Start()
defer producerInstance.SafeClose()
for {
log := &sls.Log{
Time: proto.Uint32(uint32(time.Now().Unix())),
Contents: []*sls.LogContent{{Key: proto.String("hello"), Value: proto.String("world")}},
}
producerInstance.SendLog("project", "logstore", "topic", "source", log)
time.Sleep(time.Second)
}
}