调整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"
db, _ := sql.Open("mysql", path)
log.Printf("conn db %s", path)
//log.Printf("conn db %s", path)
//设置数据库最大连接数
db.SetConnMaxLifetime(100)
//设置上数据库最大闲置连接数

View File

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

View File

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

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