调整log输出

This commit is contained in:
pengtao 2020-10-13 19:05:29 +08:00
parent 7464b00ef8
commit 7b8585fa0e
4 changed files with 138 additions and 66 deletions

View File

@ -29,7 +29,7 @@ func GetServiceList(area string) ([]ServiceList, error) {
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql" //打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
db, _ := sql.Open("mysql", path) db, _ := sql.Open("mysql", path)
log.Printf("conn db %s", path) //log.Printf("conn db %s", path)
//设置数据库最大连接数 //设置数据库最大连接数
db.SetConnMaxLifetime(100) db.SetConnMaxLifetime(100)
//设置上数据库最大闲置连接数 //设置上数据库最大闲置连接数

View File

@ -3,7 +3,6 @@ package mmysql
import ( import (
"../config" "../config"
"database/sql" "database/sql"
"fmt"
"log" "log"
"strings" "strings"
//导入mysql的驱动 //导入mysql的驱动
@ -18,11 +17,6 @@ type ServiceStatus struct {
Area string `json:"area"` Area string `json:"area"`
} }
func GetServiceStatus(c *ServiceStatus) bool {
log.Println("get message from client", c)
return true
}
func clearTransaction(tx *sql.Tx) { func clearTransaction(tx *sql.Tx) {
err := tx.Rollback() err := tx.Rollback()
if err != sql.ErrTxDone && err != nil { 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 var myconn config.MysqlConf
myconn.GetMysqlConn() myconn.GetMysqlConn()
path := strings.Join([]string{myconn.User, ":", myconn.Passwd, "@tcp(", myconn.Conn, ")/", "services", "?charset=utf8"}, "") path := strings.Join([]string{myconn.User, ":", myconn.Passwd, "@tcp(", myconn.Conn, ")/", "services", "?charset=utf8"}, "")
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql" //打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
db, err := sql.Open("mysql", path) db, _ := sql.Open("mysql", path)
tx, err := db.Begin() tx, err := db.Begin()
if err != nil { if err != nil {
log.Fatalln(err) 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 (?,?,?,?,?)") stmt, err := db.Prepare("INSERT INTO services_status(id, cost, status,ip,area) VALUES (?,?,?,?,?)")
defer stmt.Close()
if err != nil { if err != nil {
log.Panic("db prepare faild!", err) log.Panic("db prepare faild!", err)
} }
stmtTx := tx.Stmt(stmt) stmtTx := tx.Stmt(stmt)
defer stmtTx.Close()
var rs sql.Result var rs sql.Result
for _, row := range s { for _, row := range s {
rs, _ = stmtTx.Exec(row.Id, row.Cost, row.Status, row.Ip, row.Area) rs, _ = stmtTx.Exec(row.Id, row.Cost, row.Status, row.Ip, row.Area)
} }
_ = tx.Commit() _ = tx.Commit()
if n, _ := rs.RowsAffected(); n > 0 { if n, _ := rs.RowsAffected(); n > 0 {
fmt.Println("成功") log.Print("成功")
return true
} }
return false
} }

View File

@ -3,72 +3,104 @@ package main
import ( import (
"../cmd/mmysql" "../cmd/mmysql"
"encoding/json" "encoding/json"
"io" "fmt"
"log" "github.com/gin-gonic/gin"
//"log"
"github.com/op/go-logging"
"net/http"
"os" "os"
"time"
) )
var ( var log = logging.MustGetLogger("example")
Info *log.Logger var format = logging.MustStringFormatter(
Warning *log.Logger `%{color}%{time:15:04:05.000} %{shortfunc} > %{level:.4s} %{id:03x}%{color:reset} %{message}`,
Error *log.Logger
) )
func init() { 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 { 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) backend2Formatter := logging.NewBackendFormatter(backend2, format)
Warning = log.New(os.Stdout, "Warning:", log.Ldate|log.Ltime|log.Lshortfile) backend1Leveled := logging.AddModuleLevel(backend1)
Error = log.New(io.MultiWriter(os.Stderr, errFile), "Error:", log.Ldate|log.Ltime|log.Lshortfile) backend1Leveled.SetLevel(logging.INFO, "")
} logging.SetBackend(backend1Leveled, backend2Formatter)
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)
} }
func main() { func main() {
Info.Println("run main") log.Info("run main")
//test_db_query() //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()
} }

47
test/test1.go Normal file
View File

@ -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)
}