54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"time"
|
|
|
|
taos "github.com/taosdata/driver-go/v2/af"
|
|
)
|
|
|
|
func main() {
|
|
db, err := taos.Open("", "", "", "log", 0)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|
|
defer db.Close()
|
|
topic, err := db.Subscribe(false, "taoslogtail", "select ts, level, ipaddr, content from log", time.Second)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(2)
|
|
}
|
|
defer topic.Unsubscribe(true)
|
|
for {
|
|
func() {
|
|
rows, err := topic.Consume()
|
|
defer func() { rows.Close(); time.Sleep(time.Second) }()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(3)
|
|
}
|
|
for {
|
|
values := make([]driver.Value, 4)
|
|
err := rows.Next(values)
|
|
if err == io.EOF {
|
|
break
|
|
} else if err != nil {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(4)
|
|
}
|
|
ts := values[0].(time.Time)
|
|
level := values[1].(int8)
|
|
ipaddr := values[2].(string)
|
|
content := values[3].(string)
|
|
fmt.Printf("%s %d %s %s\n", ts.Format(time.StampMilli), level, ipaddr, content)
|
|
}
|
|
}()
|
|
}
|
|
}
|
|
|
|
// 未完成
|