add zap logger
This commit is contained in:
+35
-16
@@ -18,9 +18,12 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"go.uber.org/zap/zapcore"
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"it2000.com.cn/tele-recv/utils"
|
"it2000.com.cn/tele-recv/utils"
|
||||||
@@ -55,7 +58,7 @@ Read the telegram from `,
|
|||||||
Mode = os.Getenv(ModeName)
|
Mode = os.Getenv(ModeName)
|
||||||
|
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
l *zap.SugaredLogger
|
// l *zap.SugaredLogger
|
||||||
)
|
)
|
||||||
|
|
||||||
// Execute adds all child commands to the root command and sets flags appropriately.
|
// Execute adds all child commands to the root command and sets flags appropriately.
|
||||||
@@ -78,14 +81,12 @@ func init() {
|
|||||||
// Cobra also supports local flags, which will only run
|
// Cobra also supports local flags, which will only run
|
||||||
// when this action is called directly.
|
// when this action is called directly.
|
||||||
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||||
if Mode == "PROD" {
|
|
||||||
logger, _ = zap.NewProduction()
|
initLog()
|
||||||
} else {
|
|
||||||
logger, _ = zap.NewDevelopment()
|
|
||||||
}
|
|
||||||
defer logger.Sync()
|
defer logger.Sync()
|
||||||
l = logger.Sugar()
|
// l = logger.Sugar()
|
||||||
utils.Log = l
|
utils.Log = logger
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// initConfig reads in config file and ENV variables if set.
|
// initConfig reads in config file and ENV variables if set.
|
||||||
@@ -94,13 +95,6 @@ func initConfig() {
|
|||||||
// Use config file from the flag.
|
// Use config file from the flag.
|
||||||
viper.SetConfigFile(cfgFile)
|
viper.SetConfigFile(cfgFile)
|
||||||
} else {
|
} else {
|
||||||
// Find home directory.
|
|
||||||
//home, err := os.Open(".")
|
|
||||||
//if err != nil {
|
|
||||||
// fmt.Println(err)
|
|
||||||
// os.Exit(1)
|
|
||||||
//}
|
|
||||||
|
|
||||||
// Search config in home directory with name ".tele-recv" (without extension).
|
// Search config in home directory with name ".tele-recv" (without extension).
|
||||||
viper.AddConfigPath(".")
|
viper.AddConfigPath(".")
|
||||||
viper.SetConfigName("telegram")
|
viper.SetConfigName("telegram")
|
||||||
@@ -111,7 +105,7 @@ func initConfig() {
|
|||||||
// If a config file is found, read it in.
|
// If a config file is found, read it in.
|
||||||
if err := viper.ReadInConfig(); err == nil {
|
if err := viper.ReadInConfig(); err == nil {
|
||||||
// fmt.Println("Using config file:", viper.ConfigFileUsed())
|
// fmt.Println("Using config file:", viper.ConfigFileUsed())
|
||||||
l.Infof("Using config file : %s", viper.ConfigFileUsed())
|
logger.Info("Using config file ", zap.String("path", viper.ConfigFileUsed()))
|
||||||
device = viper.GetString("serial.device")
|
device = viper.GetString("serial.device")
|
||||||
baudrate = viper.GetInt("serial.baudrate")
|
baudrate = viper.GetInt("serial.baudrate")
|
||||||
bytesize = byte(viper.GetInt("serial.bytesize"))
|
bytesize = byte(viper.GetInt("serial.bytesize"))
|
||||||
@@ -123,3 +117,28 @@ func initConfig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initLog() {
|
||||||
|
logFile := "./log/telegram-%Y-%m-%d-%H.log"
|
||||||
|
rotator, err := rotatelogs.New(
|
||||||
|
logFile,
|
||||||
|
rotatelogs.WithMaxAge(60*24*time.Hour),
|
||||||
|
rotatelogs.WithRotationTime(time.Hour))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
priority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
||||||
|
return lvl >= zapcore.DebugLevel
|
||||||
|
})
|
||||||
|
|
||||||
|
encoder := zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig())
|
||||||
|
|
||||||
|
core := zapcore.NewTee(
|
||||||
|
zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), priority),
|
||||||
|
zapcore.NewCore(encoder, zapcore.AddSync(rotator), priority),
|
||||||
|
)
|
||||||
|
|
||||||
|
logger = zap.New(core)
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
+9
-7
@@ -16,10 +16,12 @@ limitations under the License.
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
"fmt"
|
|
||||||
|
"go.uber.org/zap"
|
||||||
"it2000.com.cn/tele-recv/utils"
|
"it2000.com.cn/tele-recv/utils"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@@ -68,7 +70,7 @@ func start() {
|
|||||||
// and then notify the program that it can finish.
|
// and then notify the program that it can finish.
|
||||||
go func() {
|
go func() {
|
||||||
sig := <-sigs
|
sig := <-sigs
|
||||||
l.Info(sig)
|
logger.Info("got ", zap.Any("signal", sig))
|
||||||
utils.ServerRunning = false
|
utils.ServerRunning = false
|
||||||
utils.StopSocketServer()
|
utils.StopSocketServer()
|
||||||
done <- true
|
done <- true
|
||||||
@@ -77,17 +79,17 @@ func start() {
|
|||||||
// The program will wait here until it gets the
|
// The program will wait here until it gets the
|
||||||
// expected signal (as indicated by the goroutine
|
// expected signal (as indicated by the goroutine
|
||||||
// above sending a value on `done`) and then exit.
|
// above sending a value on `done`) and then exit.
|
||||||
l.Info("awaiting signal")
|
logger.Info("awaiting signal")
|
||||||
_ = utils.InitDb(dbFile, dbInit)
|
_ = utils.InitDb(dbFile, dbInit)
|
||||||
go utils.Listen(socketAddress)
|
go utils.Listen(socketAddress)
|
||||||
for utils.ServerRunning {
|
for utils.ServerRunning {
|
||||||
if !utils.IsPortOpen() {
|
if !utils.IsPortOpen() {
|
||||||
l.Info("try to open port")
|
logger.Info("try to open port")
|
||||||
err := utils.OpenPort(device, baudrate, bytesize, stopbits)
|
err := utils.OpenPort(device, baudrate, bytesize, stopbits)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Fatal("error in open serial port ", err)
|
logger.Fatal("error in open serial port ", zap.Error(err))
|
||||||
}
|
}
|
||||||
l.Info("starting read")
|
logger.Info("starting read")
|
||||||
}
|
}
|
||||||
buffer, count := utils.ReadPort()
|
buffer, count := utils.ReadPort()
|
||||||
if count > 0 {
|
if count > 0 {
|
||||||
@@ -98,6 +100,6 @@ func start() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
<-done
|
<-done
|
||||||
l.Info("exiting")
|
logger.Info("exiting")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ Test load sqlite database and init table`,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func test() {
|
func test() {
|
||||||
l.Info("Testing environment")
|
logger.Info("Testing environment")
|
||||||
_ = utils.OpenPort(device, baudrate, bytesize, stopbits)
|
_ = utils.OpenPort(device, baudrate, bytesize, stopbits)
|
||||||
|
|
||||||
err := utils.InitDb(dbFile, dbInit)
|
err := utils.InitDb(dbFile, dbInit)
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ go 1.15
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||||
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||||
|
github.com/lestrrat-go/strftime v1.0.3 // indirect
|
||||||
github.com/magiconair/properties v1.8.4 // indirect
|
github.com/magiconair/properties v1.8.4 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.14.5
|
github.com/mattn/go-sqlite3 v1.14.5
|
||||||
github.com/mitchellh/mapstructure v1.4.0 // indirect
|
github.com/mitchellh/mapstructure v1.4.0 // indirect
|
||||||
|
|||||||
@@ -113,6 +113,11 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
|
|||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is=
|
||||||
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4=
|
||||||
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA=
|
||||||
|
github.com/lestrrat-go/strftime v1.0.3 h1:qqOPU7y+TM8Y803I8fG9c/DyKG3xH/xkng6keC1015Q=
|
||||||
|
github.com/lestrrat-go/strftime v1.0.3/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g=
|
||||||
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
|
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
|
||||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||||
github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=
|
github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=
|
||||||
|
|||||||
+9
-9
@@ -15,18 +15,18 @@ var (
|
|||||||
stopbits byte
|
stopbits byte
|
||||||
port *serial.Port
|
port *serial.Port
|
||||||
portOpened = false
|
portOpened = false
|
||||||
Log *zap.SugaredLogger
|
Log *zap.Logger
|
||||||
)
|
)
|
||||||
|
|
||||||
const readDuration = 500 * time.Millisecond
|
const readDuration = 500 * time.Millisecond
|
||||||
|
|
||||||
// OpenPort open serial port
|
// OpenPort open serial port
|
||||||
func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
|
func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
|
||||||
Log.Infow("opening serial device ",
|
Log.Info("opening serial device ",
|
||||||
"port", device,
|
zap.String("port", device),
|
||||||
"baudrate", baudrate,
|
zap.Int("baudrate", baudrate),
|
||||||
"bytesize", bytesize,
|
zap.Int("bytesize", int(bytesize)),
|
||||||
"stopbits", stopbits)
|
zap.Int("stopbits", int(stopbits)))
|
||||||
config := &serial.Config{Name: device,
|
config := &serial.Config{Name: device,
|
||||||
Baud: baudrate,
|
Baud: baudrate,
|
||||||
Size: bytesize,
|
Size: bytesize,
|
||||||
@@ -35,10 +35,10 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
|
|||||||
var err error
|
var err error
|
||||||
port, err = serial.OpenPort(config)
|
port, err = serial.OpenPort(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Fatal("error in open serial port ", err)
|
Log.Fatal("error in open serial port ", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
Log.Infof("%s opened", device)
|
Log.Info("opened ", zap.String("port", device))
|
||||||
portOpened = true
|
portOpened = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ func ReadPort() ([]byte, int) {
|
|||||||
}
|
}
|
||||||
count, err := port.Read(buffer)
|
count, err := port.Read(buffer)
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
Log.Error("error in read port ", err)
|
Log.Error("error in read port ", zap.Error(err))
|
||||||
//TODO: 3 time fail try to
|
//TODO: 3 time fail try to
|
||||||
}
|
}
|
||||||
return buffer, count
|
return buffer, count
|
||||||
|
|||||||
+8
-6
@@ -4,6 +4,8 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
const ServerType = "tcp"
|
const ServerType = "tcp"
|
||||||
@@ -17,20 +19,20 @@ func Listen(address string) {
|
|||||||
var err error
|
var err error
|
||||||
server, err = net.Listen(ServerType, address)
|
server, err = net.Listen(ServerType, address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Fatal("error in create server ", err)
|
Log.Fatal("error in create server ", zap.Error(err))
|
||||||
}
|
}
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
Log.Infof("listen on %s", address)
|
Log.Info("listen on ", zap.String("address", address))
|
||||||
for ServerRunning {
|
for ServerRunning {
|
||||||
conn, err := server.Accept()
|
conn, err := server.Accept()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ServerRunning = false
|
ServerRunning = false
|
||||||
Log.Error("error in create connection ", err)
|
Log.Error("error in create connection ", zap.Error(err))
|
||||||
}
|
}
|
||||||
if client == nil {
|
if client == nil {
|
||||||
client = conn
|
client = conn
|
||||||
ClientReady = false
|
ClientReady = false
|
||||||
Log.Infof("client %s connected ", client.RemoteAddr())
|
Log.Info("client connected on ", zap.Any("address", client.RemoteAddr()))
|
||||||
LoadUnprocessed()
|
LoadUnprocessed()
|
||||||
} else {
|
} else {
|
||||||
Log.Info("client already connected, close")
|
Log.Info("client already connected, close")
|
||||||
@@ -48,7 +50,7 @@ func Listen(address string) {
|
|||||||
func WriteToClient(data string) error {
|
func WriteToClient(data string) error {
|
||||||
_, err := client.Write([]byte(data + "\r\n"))
|
_, err := client.Write([]byte(data + "\r\n"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Error("error in write data to client socket ", err)
|
Log.Error("error in write data to client socket ", zap.Error(err))
|
||||||
closeClient()
|
closeClient()
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -58,7 +60,7 @@ func connCheck() bool {
|
|||||||
_, err := client.Read(make([]byte, 0))
|
_, err := client.Read(make([]byte, 0))
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
// this connection is invalid
|
// this connection is invalid
|
||||||
Log.Error("conn closed....", err)
|
Log.Error("conn closed....", zap.Error(err))
|
||||||
client = nil
|
client = nil
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-9
@@ -6,6 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -41,12 +42,12 @@ var (
|
|||||||
func getDb() *sql.DB {
|
func getDb() *sql.DB {
|
||||||
//log.Println("init database ", initTable)
|
//log.Println("init database ", initTable)
|
||||||
if initTable && !initialized {
|
if initTable && !initialized {
|
||||||
Log.Info("remove database file ", dbFile)
|
Log.Info("remove database ", zap.String("file", dbFile))
|
||||||
os.Remove(dbFile)
|
os.Remove(dbFile)
|
||||||
}
|
}
|
||||||
db, err := sql.Open(DbDriver, dbFile)
|
db, err := sql.Open(DbDriver, dbFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Fatal("error in open database ", err)
|
Log.Fatal("error in open database ", zap.Error(err))
|
||||||
}
|
}
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
@@ -59,7 +60,7 @@ func InitDb(file string, init bool) error {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
_, dbErr = db.Exec(TableCreate)
|
_, dbErr = db.Exec(TableCreate)
|
||||||
checkDbErr(dbErr, "error in create table")
|
checkDbErr(dbErr, "error in create table")
|
||||||
Log.Infof("database %s initialized", dbFile)
|
Log.Info("database initialized")
|
||||||
initialized = true
|
initialized = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -82,9 +83,9 @@ func InsertTelegram(teleString string) {
|
|||||||
checkDbErr(err, "error in insert telegram ")
|
checkDbErr(err, "error in insert telegram ")
|
||||||
isWriting = false
|
isWriting = false
|
||||||
if insertSQL == InsertOld {
|
if insertSQL == InsertOld {
|
||||||
Log.Infof("telegram [%d] processed ", id)
|
Log.Info("telegram processed ", zap.Int64("id", id))
|
||||||
} else {
|
} else {
|
||||||
Log.Infof("telegram [%d] saved ", id)
|
Log.Info("telegram saved ", zap.Int64("id", id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +111,7 @@ func LoadUnprocessed() {
|
|||||||
func getTelegram(db *sql.DB) []telegram {
|
func getTelegram(db *sql.DB) []telegram {
|
||||||
var telegrams []telegram
|
var telegrams []telegram
|
||||||
num := countTelegram()
|
num := countTelegram()
|
||||||
Log.Infof("%n telegram unprocessed ", num)
|
Log.Info("telegram ", zap.Int64("unprocessed", num))
|
||||||
if num < 1 {
|
if num < 1 {
|
||||||
return telegrams
|
return telegrams
|
||||||
}
|
}
|
||||||
@@ -137,7 +138,7 @@ func processed(db *sql.DB, t telegram) {
|
|||||||
result, err := stmt.Exec(t.id)
|
result, err := stmt.Exec(t.id)
|
||||||
checkDbErr(err, "error in update telegram status")
|
checkDbErr(err, "error in update telegram status")
|
||||||
id, _ := result.RowsAffected()
|
id, _ := result.RowsAffected()
|
||||||
Log.Infof("[%d] telegram update : %t", id, id > 0)
|
Log.Info("telegram update : %t", zap.Int64("id", id), zap.Bool("result", id > 0))
|
||||||
isWriting = false
|
isWriting = false
|
||||||
Log.Info("release lock")
|
Log.Info("release lock")
|
||||||
tx.Commit()
|
tx.Commit()
|
||||||
@@ -156,7 +157,7 @@ func countTelegram() int64 {
|
|||||||
|
|
||||||
func getWriteLock() {
|
func getWriteLock() {
|
||||||
count := 0
|
count := 0
|
||||||
Log.Debugf("write lock : %t", isWriting)
|
Log.Debug("with ", zap.Bool("lock", isWriting))
|
||||||
for isWriting && count < 10 {
|
for isWriting && count < 10 {
|
||||||
Log.Info("waiting for write ")
|
Log.Info("waiting for write ")
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
@@ -170,6 +171,6 @@ func getWriteLock() {
|
|||||||
|
|
||||||
func checkDbErr(err error, msg string) {
|
func checkDbErr(err error, msg string) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Fatal(msg, err)
|
Log.Fatal(msg, zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -3,6 +3,8 @@ package utils
|
|||||||
import (
|
import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -27,7 +29,7 @@ func check() {
|
|||||||
telegram := exp.FindString(string(buffer))
|
telegram := exp.FindString(string(buffer))
|
||||||
|
|
||||||
if len(telegram) > 0 {
|
if len(telegram) > 0 {
|
||||||
Log.Infof("telegram : %s", telegram)
|
Log.Info("telegram ", zap.String("text", telegram))
|
||||||
buffer = nil
|
buffer = nil
|
||||||
InsertTelegram(telegram)
|
InsertTelegram(telegram)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user