tail -f several logs and send every new line to kafka using sarama

57 views
Skip to first unread message

Stéphane Neveu

unread,
Apr 26, 2016, 8:35:07 AM4/26/16
to golang-nuts
Hi,

I'd like to tail -f several log files in /var/log (I thing one goroutine per log would be fine) and every goroutine will keep on "watching" forever on a log and send every new line with kafka client sarama. Here is my code (does not work) :


package main

import (
   
"flag"
   
"github.com/Shopify/sarama"
   
"log"
   
"os"
   
"fmt"
   
"strings"
   
"github.com/hpcloud/tail"
   
"github.com/spf13/viper"
   
//"io/ioutil"
   
//"reflect"
)



//func produce(producer sarama.SyncProducer, cfg *sarama.Config, brokers *string, topic string, logger *log.Logger, log string, t *tail.Tail){
func produce
(cfg *sarama.Config, brokers *string, topic string, logger *log.Logger, log string, t *tail.Tail){
    logger
.Println("Entering produce")
   
/*logger.Println(strings.Split(*brokers, ","))
    logger.Println(reflect.TypeOf(strings.Split(*brokers, ",")))
    logger.Println(log)*/

    logger
.Printf("sarama.NewSyncProducer")
    producer
, err := sarama.NewSyncProducer(strings.Split(*brokers, ","), cfg)
   
if err != nil {
        logger
.Fatalln(err)
   
}
    defer func
() {
       
if err := producer.Close(); err != nil {
            logger
.Fatalln(err)
       
}
   
}()

   
/*t, err := tail.TailFile(log, tail.Config{Follow: true, ReOpen: true})
    if err != nil {
        fmt.Println(fmt.Errorf("Error with tail: %v\n", err.Error()))
    }*/

   
for line := range t.Lines {
       
//logger.Println(line)
       
//logger.Println(line.Text)
        logger
.Printf("ProduceMessage")
        msg
:= &sarama.ProducerMessage{Topic: topic, Value: sarama.StringEncoder(line.Text)}
        _
, _, err := producer.SendMessage(msg)
       
if err != nil {
            logger
.Printf("FAILED to send message: %s\n", err)
       
}
   
}

}


But it doesn't work, it's not even printing the first println in func produce ...


Reply all
Reply to author
Forward
0 new messages