我正在尝试记录请求者的IP地址,他们正在使用什么方法以及他们正在请求什么文件。但是由于某种原因,它仅在终端上输出,而没有将其保存到logfile.txt ...package mainimport ( "fmt" "net/http" "log" "encoding/json" "io/ioutil")type Options struct { Path string Port string}func Log(handler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Printf("%s %s %s\n", r.RemoteAddr, r.Method, r.URL) handler.ServeHTTP(w, r) })}func main() { op := &Options{Path: "./", Port: "8001"} data, _ := ioutil.ReadFile("./config.json") json.Unmarshal(data, op) http.Handle("/", http.FileServer(http.Dir(op.Path))) err := http.ListenAndServe(":" + op.Port, Log(http.DefaultServeMux)) if err != nil { log.Fatal("ListenAndServe: ", err) }}
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
在您的Log函数中,您正在使用fmt.Printfnot fmt.Fprintf。
例如,
package main
import (
"fmt"
"log"
"net/http"
"os"
)
var logFile *os.File
func Log(handler http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(logFile, "%s %s %s\n", r.RemoteAddr, r.Method, r.URL)
handler.ServeHTTP(w, r)
})
}
func main() {
var err error
logFile, err = os.Create("logfile.txt")
if err != nil {
log.Fatal("Log file create:", err)
return
}
defer logFile.Close()
}
- 1 回答
- 0 关注
- 245 浏览
添加回答
举报
0/150
提交
取消