func apiListLog(logDir string) gin.HandlerFunc {
//logDir 保存日志的目录
//建议在开发/beta环境中使用
return func(c *gin.Context) {
if p := c.Query("f"); p != "" {
//日志文件的绝对路径
c.File(p) //网页展示日志文件内容
return
}
if logDir == "" {
c.String(200, "%s", "logDir is empty")
return
}
//render 日志文件中的全部内容
buff := new(bytes.Buffer)
err := filepath.Walk(logDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
fmt.Fprintf(buff, `<li><a href="log?f=%s" title="%dKB">%s</a></li>`, path, info.Size()>>10,path)
}
return nil
})
if err != nil {
c.String(200, "%v", err)
} else {
c.Data(http.StatusOK, "text/html; charset=utf-8", buff.Bytes())
}
}
}