亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Go Language Simple HTTP Server打印到日志

使用Go Language Simple HTTP Server打印到日志

Go
一只斗牛犬 2021-05-09 12:49:10
我正在嘗試記錄請求者的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()

}


查看完整回答
反對 回復 2021-05-17
  • 1 回答
  • 0 關注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號