diff --git a/cmd/mmysql/servicelist.go b/cmd/mmysql/servicelist.go index c1ae759..e688b23 100644 --- a/cmd/mmysql/servicelist.go +++ b/cmd/mmysql/servicelist.go @@ -29,7 +29,7 @@ func GetServiceList(area string) ([]ServiceList, error) { //打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql" db, _ := sql.Open("mysql", path) - log.Printf("conn db %s", path) + //log.Printf("conn db %s", path) //设置数据库最大连接数 db.SetConnMaxLifetime(100) //设置上数据库最大闲置连接数 diff --git a/cmd/mmysql/servicestatus.go b/cmd/mmysql/servicestatus.go index e168f52..1b1b566 100644 --- a/cmd/mmysql/servicestatus.go +++ b/cmd/mmysql/servicestatus.go @@ -3,7 +3,6 @@ package mmysql import ( "../config" "database/sql" - "fmt" "log" "strings" //导入mysql的驱动 @@ -18,11 +17,6 @@ type ServiceStatus struct { Area string `json:"area"` } -func GetServiceStatus(c *ServiceStatus) bool { - log.Println("get message from client", c) - return true -} - func clearTransaction(tx *sql.Tx) { err := tx.Rollback() if err != sql.ErrTxDone && err != nil { @@ -30,12 +24,12 @@ func clearTransaction(tx *sql.Tx) { } } -func SaveServiceStatus(s []ServiceStatus) { +func SaveServiceStatus(s []*ServiceStatus) bool { var myconn config.MysqlConf myconn.GetMysqlConn() path := strings.Join([]string{myconn.User, ":", myconn.Passwd, "@tcp(", myconn.Conn, ")/", "services", "?charset=utf8"}, "") //打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql" - db, err := sql.Open("mysql", path) + db, _ := sql.Open("mysql", path) tx, err := db.Begin() if err != nil { log.Fatalln(err) @@ -44,19 +38,18 @@ func SaveServiceStatus(s []ServiceStatus) { stmt, err := db.Prepare("INSERT INTO services_status(id, cost, status,ip,area) VALUES (?,?,?,?,?)") - defer stmt.Close() if err != nil { log.Panic("db prepare faild!", err) } stmtTx := tx.Stmt(stmt) - defer stmtTx.Close() var rs sql.Result for _, row := range s { rs, _ = stmtTx.Exec(row.Id, row.Cost, row.Status, row.Ip, row.Area) } _ = tx.Commit() if n, _ := rs.RowsAffected(); n > 0 { - fmt.Println("成功") + log.Print("成功") + return true } - + return false } diff --git a/server/server.go b/server/server.go index 7a6b257..6333cc2 100644 --- a/server/server.go +++ b/server/server.go @@ -3,72 +3,104 @@ package main import ( "../cmd/mmysql" "encoding/json" - "io" - "log" + "fmt" + "github.com/gin-gonic/gin" + //"log" + "github.com/op/go-logging" + "net/http" "os" + "time" ) -var ( - Info *log.Logger - Warning *log.Logger - Error *log.Logger +var log = logging.MustGetLogger("example") +var format = logging.MustStringFormatter( + `%{color}%{time:15:04:05.000} %{shortfunc} > %{level:.4s} %{id:03x}%{color:reset} %{message}`, ) func init() { - errFile, err := os.OpenFile("errors.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + //errFile, err := os.OpenFile("errors.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + //if err != nil { + // panic(err) + //} + //defer errFile.Close() + //log.SetFlags(log.Ldate|log.Lshortfile) + //log.SetOutput(io.MultiWriter(os.Stdout, errFile)) + ////log := log.New(io.MultiWriter(os.Stderr, errFile), "前缀", log.Ldate|log.Ltime|log.Lshortfile) + + logFile, err := os.OpenFile("errors.log", os.O_WRONLY, 0666) if err != nil { - log.Fatalln("打开日志文件失败:", err) + fmt.Println(err) } + backend1 := logging.NewLogBackend(logFile, "", 0) + backend2 := logging.NewLogBackend(os.Stderr, "", 0) - Info = log.New(os.Stdout, "Info:", log.Ldate|log.Ltime|log.Lshortfile) - Warning = log.New(os.Stdout, "Warning:", log.Ldate|log.Ltime|log.Lshortfile) - Error = log.New(io.MultiWriter(os.Stderr, errFile), "Error:", log.Ldate|log.Ltime|log.Lshortfile) + backend2Formatter := logging.NewBackendFormatter(backend2, format) + backend1Leveled := logging.AddModuleLevel(backend1) + backend1Leveled.SetLevel(logging.INFO, "") -} - -func test_db_query() { - //var m mmysql.ServiceList - - vv, err := mmysql.GetServiceList("bj") - if err != nil { - Error.Println(err) - log.Panic("conn mysql failed!") - } - jsons, errs := json.Marshal(vv) - if errs != nil { - Error.Println(errs.Error()) - log.Panic("conver struct failed!", vv) - } - Info.Println(string(jsons)) - -} - -func test_db_insert() { - var v3 []mmysql.ServiceStatus - - v1 := mmysql.ServiceStatus{ - Id: 1, - Cost: 1199, - Ip: "192.168.100.1", - Status: true, - Area: "bj", - } - - v2 := mmysql.ServiceStatus{ - Id: 1, - Cost: 2000, - Ip: "192.168.100.2", - Status: true, - Area: "bj", - } - v3 = append(v3, v1) - v3 = append(v3, v2) - mmysql.SaveServiceStatus(v3) + logging.SetBackend(backend1Leveled, backend2Formatter) } func main() { - Info.Println("run main") + log.Info("run main") //test_db_query() - test_db_insert() + + router := gin.Default() + + router.GET("/healcheck", func(c *gin.Context) { + // 方法二:使用结构体 + var msg struct { + Name string `json:"user"` + Message string + } + msg.Name = "kingsome" + msg.Message = "Hello world!" + + c.JSON(http.StatusOK, msg) + }) + + router.GET("/servicelist", func(c *gin.Context) { + area := c.DefaultQuery("area", "bj") + vv, err := mmysql.GetServiceList(area) + if err != nil { + log.Error(err) + } + jsons, errs := json.Marshal(vv) + log.Info(string(jsons)) + if errs != nil { + log.Error(errs.Error()) + } + c.JSON(http.StatusOK, string(jsons)) + + }) + + router.POST("/servicestatus", func(c *gin.Context) { + //data=[{"id":1,"cost":1199,"ip":"192.168.100.2","status":true,"area":"bj"},{"id":2,"cost":1199,"ip":"192.168.100.3","status":true,"area":"bj"}] + data := c.PostForm("data") + log.Info(data) + var vv []*mmysql.ServiceStatus + err := json.Unmarshal([]byte(data), &vv) + if err != nil { + log.Error(err) + c.JSON(500, "failed") + } + status := mmysql.SaveServiceStatus(vv) + if status != false { + c.JSON(http.StatusOK, "success") + } else { + c.JSON(500, "failed") + } + + }) + + s := &http.Server{ + Addr: ":8000", + Handler: router, + ReadTimeout: 10 * time.Second, + WriteTimeout: 10 * time.Second, + MaxHeaderBytes: 1 << 20, + } + + s.ListenAndServe() } diff --git a/test/test1.go b/test/test1.go new file mode 100644 index 0000000..124b7f6 --- /dev/null +++ b/test/test1.go @@ -0,0 +1,47 @@ +package test + +import ( + "../cmd/mmysql" + "encoding/json" + "log" +) + +func Test_db_query() { + //var m mmysql.ServiceList + + vv, err := mmysql.GetServiceList("bj") + if err != nil { + log.Println(err) + log.Panic("conn mysql failed!") + } + jsons, errs := json.Marshal(vv) + if errs != nil { + log.Println(errs.Error()) + log.Panic("conver struct failed!", vv) + } + log.Println(string(jsons)) + +} + +func Test_db_insert() { + var v3 []mmysql.ServiceStatus + + v1 := mmysql.ServiceStatus{ + Id: 1, + Cost: 1199, + Ip: "192.168.100.1", + Status: true, + Area: "bj", + } + + v2 := mmysql.ServiceStatus{ + Id: 1, + Cost: 2000, + Ip: "192.168.100.2", + Status: true, + Area: "bj", + } + v3 = append(v3, v1) + v3 = append(v3, v2) + mmysql.SaveServiceStatus(v3) +}