pulsar-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [pulsar] wolfstudy commented on a change in pull request #4008: [go function]support log topic for go function
Date Tue, 09 Apr 2019 17:11:33 GMT
wolfstudy commented on a change in pull request #4008: [go function]support log topic for go
URL: https://github.com/apache/pulsar/pull/4008#discussion_r273603876

 File path: pulsar-function-go/pf/instance.go
 @@ -259,6 +268,39 @@ func getIdleTimeout(timeoutMilliSecond time.Duration) time.Duration
 	return timeoutMilliSecond
+func (gi *goInstance) setupLogHandler() error {
+	if gi.context.instanceConf.funcDetails.GetLogTopic() != "" {
+		gi.context.logAppender = NewLogAppender(
+			gi.client,                                         //pulsar client
+			gi.context.instanceConf.funcDetails.GetLogTopic(), //log topic
+			getDefaultSubscriptionName(gi.context.instanceConf.funcDetails.Tenant, //fqn
+				gi.context.instanceConf.funcDetails.Namespace,
+				gi.context.instanceConf.funcDetails.Name),
+		)
+		return gi.context.logAppender.Start()
+	}
+	return nil
+func (gi *goInstance) addLogTopicHandler() {
+	if gi.context.logAppender == nil {
+		panic("please init logAppender")
+	}
+	for _, logByte := range log.StrEntry {
 Review comment:
   OK, there is a bad place in this pr. About the processing logic of []StrEntry, I should
put this pull request, so the whole code logic may be relatively clear.
   The specific processing logic is as follows:
   in pulsar-function-go/log/log.go
   var StrEntry []string
   func (hook *contextHook) Fire(entry *log.Entry) error {
           //handler log appender
   	strEntry, err := entry.String()
   	if err != nil {
   		fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
   		return err
   	StrEntry = append(StrEntry, strEntry)
   	return nil
   In go function, we used used is [logrus](https://github.com/sirupsen/logrus) as log lib.
He has a powerful function **hook**. Users can implement hooks themselves to ensure that each
time the log is written, the Fire() method in the hook is called. With this feature,  i put
the logs I need to write every time into []StrEntry, so that in our appender, we can get the
data we want from this []StrEntry, and then send it to the producer's msg payload for corresponding

This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:

With regards,
Apache Git Services

View raw message