Bladeren bron

增加调试代码

zou.yingbin 4 jaren geleden
bovenliggende
commit
ecfa2fc330
4 gewijzigde bestanden met toevoegingen van 117 en 2 verwijderingen
  1. 2 2
      config/config.xml
  2. 55 0
      controllers/other/logfiledown.go
  3. 57 0
      controllers/other/logfilelist.go
  4. 3 0
      routers/router.go

+ 2 - 2
config/config.xml

@@ -10,10 +10,10 @@
   </LogSetting>
   <DbSetting>
     <DbDriver value="oci8"/>
-    <DbAddress value="192.168.31.117"/>
+    <DbAddress value="192.168.31.88"/>
     <DbName value="orcl"/>
     <DbPort value="1521"/>
-    <DbUser value="mtp2_test176"/>
+    <DbUser value="mtp2_test104"/>
     <DbPwd value="muchinfo"/>
   </DbSetting>
   <RedisSetting>

+ 55 - 0
controllers/other/logfiledown.go

@@ -0,0 +1,55 @@
+/**
+* @Author: zou.yingbin
+* @Create  : 2021/10/15 16:28
+* @Modify  : 2021/10/15 16:28
+ */
+
+package other
+
+import (
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"io/ioutil"
+	"mtp2_if/config"
+	"net/http"
+)
+
+// DownloadFile 提供文件下载功能
+func DownloadFile(ctx *gin.Context) {
+	fileDir := config.SerCfg.LogCfg.LogPath
+	if len(fileDir) > 0 {
+		if nLen := len(fileDir); fileDir[nLen-1] != '/' {
+			fileDir += "/"
+		}
+	}
+	filename := ctx.DefaultQuery("filename", "")
+	fGetFile := func(filename string) (fullPath string, err error) {
+		err = nil
+		if sfile, err := ioutil.ReadDir(fileDir); err == nil {
+			bExist := false
+			for _, info := range sfile {
+				if !info.IsDir() && info.Name() == filename {
+					fullPath = fileDir + filename
+					bExist = true
+					break
+				}
+			}
+			if !bExist {
+				err = fmt.Errorf("not found:%v", filename)
+			}
+		} else {
+			err = fmt.Errorf("err:%v", err)
+		}
+		return
+	}
+	if fullPath, err := fGetFile(filename); err == nil && fullPath != "" {
+		fmt.Println("download file:", fullPath)
+		ctx.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
+		ctx.Writer.Header().Add("Content-Type", "application/octet-stream")
+		ctx.File(fullPath)
+	} else {
+		strErr := fmt.Sprintf("/404:%v", err)
+		fmt.Println(strErr)
+		ctx.Redirect(http.StatusFound, strErr)
+	}
+}

+ 57 - 0
controllers/other/logfilelist.go

@@ -0,0 +1,57 @@
+/**
+* @Author: zou.yingbin
+* @Create  : 2021/10/15 16:28
+* @Modify  : 2021/10/15 16:28
+ */
+
+package other
+
+import (
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"html/template"
+	"io/ioutil"
+	"mtp2_if/config"
+	"net/http"
+	"strings"
+)
+
+// LogList 列出日志文件
+func LogList(c *gin.Context) {
+	host := c.Request.Host
+	if !strings.Contains(host, "http://") {
+		host = "http://" + host
+	}
+
+	const templateText = `
+<h1>日志文件列表</h1>
+{{.db}}
+<p>------------------------</p>
+{{.data}}
+<p>------------------------</p>
+`
+	sFile := make([]string, 0)
+	path := config.SerCfg.LogCfg.LogPath
+	db := fmt.Sprintf("%s/***@%s:%s/%s",
+		config.SerCfg.DbCfg.DbUser,
+		config.SerCfg.DbCfg.DbAddress,
+		config.SerCfg.DbCfg.DbPort,
+		config.SerCfg.DbCfg.DbName)
+	if d, err := ioutil.ReadDir(path); err == nil {
+		for _, v := range d {
+			if !v.IsDir() {
+				lk := fmt.Sprintf(`<a href="%v/debug/download?filename=%v" target="_blank">%v</a> size:%.2f k`,
+					host, v.Name(), v.Name(), float64(v.Size())/1024.0)
+				sFile = append(sFile, lk)
+			}
+		}
+		str := strings.Join(sFile, "\n<br>")
+		if tmpl, err := template.New("index").Parse(templateText); err == nil {
+			_ = tmpl.Execute(c.Writer, gin.H{"data": template.HTML(str), "db": template.HTML(db)})
+		} else {
+			c.String(400, "index err.")
+		}
+	} else {
+		c.JSON(http.StatusBadRequest, gin.H{"message": "can't list the file"})
+	}
+}

+ 3 - 0
routers/router.go

@@ -13,6 +13,7 @@ import (
 	"mtp2_if/controllers/hsby"
 	"mtp2_if/controllers/market"
 	"mtp2_if/controllers/order"
+	"mtp2_if/controllers/other"
 	"mtp2_if/controllers/qhj"
 	"mtp2_if/controllers/qhjPCWeb"
 	"mtp2_if/controllers/quote"
@@ -52,6 +53,8 @@ func InitRouter() *gin.Engine {
 	// Swagger
 	if config.SerCfg.GetDebugMode() {
 		r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
+		r.GET("/debug/log", other.LogList)
+		r.GET("/debug/download", other.DownloadFile)
 	}
 	// 终端配置
 	r.GET("/cfg", cfg.QueryCfg)