add zap for default logger

This commit is contained in:
zhiqiang feng
2020-12-28 11:06:36 +08:00
parent f43412b235
commit 2cbfbdbbca
9 changed files with 81 additions and 45 deletions
+20 -1
View File
@@ -20,10 +20,14 @@ import (
"os" "os"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"go.uber.org/zap"
"github.com/spf13/viper" "github.com/spf13/viper"
"it2000.com.cn/tele-recv/utils"
) )
const ModeName = "TELEGRAM_MODE"
var ( var (
cfgFile string cfgFile string
device string device string
@@ -47,6 +51,11 @@ Read the telegram from `,
// has an action associated with it: // has an action associated with it:
// Run: func(cmd *cobra.Command, args []string) { }, // Run: func(cmd *cobra.Command, args []string) { },
} }
Mode = os.Getenv(ModeName)
logger *zap.Logger
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.
@@ -69,6 +78,14 @@ 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()
} else {
logger, _ = zap.NewDevelopment()
}
defer logger.Sync()
l = logger.Sugar()
utils.Log = l
} }
// initConfig reads in config file and ENV variables if set. // initConfig reads in config file and ENV variables if set.
@@ -93,7 +110,8 @@ 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())
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"))
@@ -103,4 +121,5 @@ func initConfig() {
dbInit = viper.GetBool("sqlite.init") dbInit = viper.GetBool("sqlite.init")
socketAddress = viper.GetString("socket.address") socketAddress = viper.GetString("socket.address")
} }
} }
+7 -10
View File
@@ -16,8 +16,6 @@ limitations under the License.
package cmd package cmd
import ( import (
"fmt"
"log"
"os" "os"
"os/signal" "os/signal"
"syscall" "syscall"
@@ -70,8 +68,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
fmt.Println() l.Info(sig)
fmt.Println(sig)
utils.ServerRunning = false utils.ServerRunning = false
utils.StopSocketServer() utils.StopSocketServer()
done <- true done <- true
@@ -80,27 +77,27 @@ 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.
fmt.Println("awaiting signal") l.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() {
log.Println("try to open port") l.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 {
log.Fatal("error in open serial port ", err) l.Fatal("error in open serial port ", err)
} }
log.Println("starting read") l.Info("starting read")
} }
buffer, count := utils.ReadPort() buffer, count := utils.ReadPort()
if count > 0 { if count > 0 {
if lograw { if lograw {
log.Print(string(buffer)) l.Error(string(buffer))
} }
utils.Append(buffer) utils.Append(buffer)
} }
} }
<-done <-done
fmt.Println("exiting") l.Info("exiting")
} }
+1 -3
View File
@@ -16,8 +16,6 @@ limitations under the License.
package cmd package cmd
import ( import (
"log"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"it2000.com.cn/tele-recv/utils" "it2000.com.cn/tele-recv/utils"
) )
@@ -35,7 +33,7 @@ Test load sqlite database and init table`,
} }
func test() { func test() {
log.Println("Testing environment") l.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)
+2
View File
@@ -14,6 +14,8 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/viper v1.7.1 github.com/spf13/viper v1.7.1
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.16.0
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect
golang.org/x/text v0.3.4 // indirect golang.org/x/text v0.3.4 // indirect
gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/ini.v1 v1.62.0 // indirect
+18
View File
@@ -11,6 +11,7 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
@@ -144,6 +145,7 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9
github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM=
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -209,8 +211,19 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -230,6 +243,7 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
@@ -299,6 +313,9 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
@@ -343,5 +360,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+10 -5
View File
@@ -2,10 +2,10 @@ package utils
import ( import (
"io" "io"
"log"
"time" "time"
"github.com/tarm/serial" "github.com/tarm/serial"
"go.uber.org/zap"
) )
var ( var (
@@ -15,13 +15,18 @@ var (
stopbits byte stopbits byte
port *serial.Port port *serial.Port
portOpened = false portOpened = false
Log *zap.SugaredLogger
) )
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.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize, "stopbits=", stopbits) Log.Infow("opening serial device ",
"port", device,
"baudrate", baudrate,
"bytesize", bytesize,
"stopbits", stopbits)
config := &serial.Config{Name: device, config := &serial.Config{Name: device,
Baud: baudrate, Baud: baudrate,
Size: bytesize, Size: bytesize,
@@ -30,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.Fatalln("error in open serial port ", err) Log.Fatal("error in open serial port ", err)
return err return err
} }
log.Println("opened port ", port) Log.Infof("%s opened", device)
portOpened = true portOpened = true
return nil return nil
} }
@@ -46,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.Println("error in read port ", err) Log.Error("error in read port ", err)
//TODO: 3 time fail try to //TODO: 3 time fail try to
} }
return buffer, count return buffer, count
+7 -8
View File
@@ -2,7 +2,6 @@ package utils
import ( import (
"io" "io"
"log"
"net" "net"
"time" "time"
) )
@@ -18,23 +17,23 @@ 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 ", err)
} }
defer server.Close() defer server.Close()
log.Println("listen on ", address) Log.Infof("listen on %s", address)
for ServerRunning { for ServerRunning {
conn, err := server.Accept() conn, err := server.Accept()
if err != nil { if err != nil {
ServerRunning = false ServerRunning = false
log.Fatalln("error in create connection ", err) Log.Error("error in create connection ", err)
} }
if client == nil { if client == nil {
client = conn client = conn
ClientReady = false ClientReady = false
log.Println("client connected ", client.RemoteAddr()) Log.Infof("client %s connected ", client.RemoteAddr())
LoadUnprocessed() LoadUnprocessed()
} else { } else {
log.Println("client already connected, close") Log.Info("client already connected, close")
client.Close() client.Close()
client = nil client = nil
conn.Close() conn.Close()
@@ -49,7 +48,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.Println("error in write data to client socket ", err) Log.Error("error in write data to client socket ", err)
closeClient() closeClient()
} }
return err return err
@@ -59,7 +58,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.Println("conn closed....", err) Log.Error("conn closed....", err)
client = nil client = nil
return false return false
} }
+15 -16
View File
@@ -2,7 +2,6 @@ package utils
import ( import (
"database/sql" "database/sql"
"log"
"os" "os"
"time" "time"
@@ -42,12 +41,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.Println("remove database file", dbFile) Log.Info("remove database 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 ", err)
} }
return db return db
} }
@@ -60,7 +59,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.Println("database ", db, " initialized") Log.Infof("database %s initialized", dbFile)
initialized = true initialized = true
return nil return nil
} }
@@ -83,14 +82,14 @@ 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.Println("telegram processed ", id) Log.Infof("telegram [%n] processed ", id)
} else { } else {
log.Println("telegram saved ", id) Log.Infof("telegram [%n] saved ", id)
} }
} }
func LoadUnprocessed() { func LoadUnprocessed() {
log.Println("loading telegram") Log.Info("loading telegram")
db := getDb() db := getDb()
defer db.Close() defer db.Close()
for { for {
@@ -105,17 +104,17 @@ func LoadUnprocessed() {
} }
} }
ClientReady = true ClientReady = true
log.Println("client is ready for new telegram") Log.Info("client is ready for new telegram")
} }
func getTelegram(db *sql.DB) []telegram { func getTelegram(db *sql.DB) []telegram {
var telegrams []telegram var telegrams []telegram
num := countTelegram() num := countTelegram()
log.Println("unprocessed : ", num) Log.Infof("%n telegram unprocessed ", num)
if num < 1 { if num < 1 {
return telegrams return telegrams
} }
log.Println("try to load unprocessed telegram ", num) Log.Info("try to load unprocessed telegram ")
rows, err := db.Query(load) rows, err := db.Query(load)
checkDbErr(err, "error in query telegram") checkDbErr(err, "error in query telegram")
defer rows.Close() defer rows.Close()
@@ -138,9 +137,9 @@ 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.Println(t.id, " telegram update : ", id > 0) Log.Infof("[%n] telegram update : %b", id, id > 0)
isWriting = false isWriting = false
log.Println("release lock") Log.Info("release lock")
tx.Commit() tx.Commit()
} }
@@ -157,20 +156,20 @@ func countTelegram() int64 {
func getWriteLock() { func getWriteLock() {
count := 0 count := 0
log.Println("write lock :", isWriting) Log.Infof("write lock : %b", isWriting)
for isWriting && count < 10 { for isWriting && count < 10 {
log.Println("waiting for write ") Log.Info("waiting for write ")
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)
count++ count++
} }
if count >= 10 { if count >= 10 {
log.Fatalln("database locked") Log.Fatal("database locked")
} }
isWriting = true isWriting = true
} }
func checkDbErr(err error, msg string) { func checkDbErr(err error, msg string) {
if err != nil { if err != nil {
log.Fatalln(msg, err) Log.Fatal(msg, err)
} }
} }
+1 -2
View File
@@ -1,7 +1,6 @@
package utils package utils
import ( import (
"log"
"regexp" "regexp"
"strings" "strings"
) )
@@ -28,7 +27,7 @@ func check() {
telegram := exp.FindString(string(buffer)) telegram := exp.FindString(string(buffer))
if len(telegram) > 0 { if len(telegram) > 0 {
log.Println("telegram : ", telegram) Log.Infof("telegram : %s", telegram)
buffer = nil buffer = nil
InsertTelegram(telegram) InsertTelegram(telegram)
} }