使用Go语言简单HTTP服务器打印到日志
我试图记录请求者的IP地址、他们使用的方法以及他们请求的文件。但由于某些原因,它只在终端上输出,而不保存到logfile.txt使用Go语言简单HTTP服务器打印到日志,go,Go,我试图记录请求者的IP地址、他们使用的方法以及他们请求的文件。但由于某些原因,它只在终端上输出,而不保存到logfile.txt package main import ( "fmt" "net/http" "log" "encoding/json" "io/ioutil" ) type Options struct { Path string Port string } func Log(handler http.Handler) http.Handler {
package main
import (
"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)
}
}
在
Log
函数中,您正在使用not
比如说,
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()
}
我添加了FprintF(w…但我如何将其导入logs.txt之类的文件?(谢谢您的帮助,顺便说一句)查看我的修订答案以获得解决方案的概要。您的原样脚本(登录到控制台)正是我所需要的。