logfilelist.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/10/15 16:28
  4. * @Modify : 2021/10/15 16:28
  5. */
  6. package other
  7. import (
  8. "fmt"
  9. "github.com/gin-gonic/gin"
  10. "html/template"
  11. "io/ioutil"
  12. "mtp2_if/config"
  13. "net/http"
  14. "strings"
  15. )
  16. var (
  17. VERSION string
  18. GITHASH string
  19. )
  20. // LogList 列出日志文件
  21. func LogList(c *gin.Context) {
  22. host := c.Request.Host
  23. if !strings.Contains(host, "http://") {
  24. host = "http://" + host
  25. }
  26. const templateText = `
  27. <h1>go查询服务信息</h1>
  28. <a href="{{.host}}/debug/update" title="点击后从自动构建服务拉取版本升级并重启GO服务, 请谨慎点击" target="_blank">点击升级到最新版本</a>
  29. <p>===========================</p>
  30. version : {{.version}}<br>
  31. git hash: {{.githash}}<br>
  32. oracle : {{.db}} <br>
  33. mysql : {{.mysql}} <br>
  34. redis : {{.redis}} <br>
  35. <br>
  36. <a href="{{.host}}/debug/token" title="仅当调试模式内网段才能成功设置" target="_blank">点击设置token</a>
  37. <h1>日志文件列表</h1>
  38. <p>------------------------</p>
  39. {{.data}}
  40. <p>------------------------</p>
  41. `
  42. sFile := make([]string, 0)
  43. path := config.SerCfg.LogCfg.LogPath
  44. db := fmt.Sprintf("%s/***@%s:%s/%s",
  45. config.SerCfg.DbCfg.DbUser,
  46. config.SerCfg.DbCfg.DbAddress,
  47. config.SerCfg.DbCfg.DbPort,
  48. config.SerCfg.DbCfg.DbName)
  49. mysql := fmt.Sprintf("%s/***@%s:%v/%s",
  50. config.SerCfg.MySQLCfg.Username,
  51. config.SerCfg.MySQLCfg.Host,
  52. config.SerCfg.MySQLCfg.Port,
  53. config.SerCfg.MySQLCfg.DBName)
  54. redis := fmt.Sprintf("%s:%v", config.SerCfg.RedisCfg.Address, config.SerCfg.RedisCfg.Port)
  55. if d, err := ioutil.ReadDir(path); err == nil {
  56. for _, v := range d {
  57. if !v.IsDir() {
  58. lk := fmt.Sprintf(`<a href="%v/debug/download?filename=%v" target="_blank">%v</a> size:%.2f k`,
  59. host, v.Name(), v.Name(), float64(v.Size())/1024.0)
  60. lk2 := fmt.Sprintf(`<a href="%v/debug/log/view?filename=%v" target="_blank">查看</a>`, host, v.Name())
  61. lk = lk + " " + lk2
  62. sFile = append(sFile, lk)
  63. }
  64. }
  65. str := strings.Join(sFile, "\n<br>")
  66. if tmpl, err := template.New("index").Parse(templateText); err == nil {
  67. _ = tmpl.Execute(c.Writer, gin.H{"data": template.HTML(str), "db": template.HTML(db),
  68. "mysql": template.HTML(mysql), "redis": template.HTML(redis),
  69. "version": template.HTML(VERSION), "githash": template.HTML(GITHASH)})
  70. } else {
  71. c.String(400, "index err.")
  72. }
  73. } else {
  74. c.JSON(http.StatusBadRequest, gin.H{"message": "can't list the file"})
  75. }
  76. }