example/consumer/custom_logger/with_custom_logger.go (47 lines of code) (raw):
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
sls "github.com/aliyun/aliyun-log-go-sdk"
consumerLibrary "github.com/aliyun/aliyun-log-go-sdk/consumer"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"gopkg.in/natefinch/lumberjack.v2"
)
// README :
// This is a very simple example of creating a consumer worker with custom logger.
func main() {
//
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)
option := consumerLibrary.LogHubConfig{
Endpoint: "",
AccessKeyID: "",
AccessKeySecret: "",
Project: "",
Logstore: "",
ConsumerGroupName: "",
ConsumerName: "",
CursorPosition: consumerLibrary.END_CURSOR,
Logger: logger, // set producer logger
}
consumerWorker := consumerLibrary.InitConsumerWorkerWithCheckpointTracker(option, process)
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGTERM)
consumerWorker.Start()
if _, ok := <-ch; ok {
level.Info(consumerWorker.Logger).Log("msg", "get stop signal, start to stop consumer worker", "consumer worker name", option.ConsumerName)
consumerWorker.StopAndWait()
}
}
// Fill in your consumption logic here, and be careful not to change the parameters of the function and the return value,
// otherwise you will report errors.
func process(shardId int, logGroupList *sls.LogGroupList, checkpointTracker consumerLibrary.CheckPointTracker) (string, error) {
fmt.Println(shardId, logGroupList)
checkpointTracker.SaveCheckPoint(false)
return "", nil
}