2019-02-02 16:18:25 +08:00
|
|
|
|
// Copyright 2018 gf Author(https://github.com/gogf/gf). All Rights Reserved.
|
2018-04-19 19:11:10 +08:00
|
|
|
|
//
|
|
|
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
|
|
|
// If a copy of the MIT was not distributed with this file,
|
2019-02-02 16:18:25 +08:00
|
|
|
|
// You can obtain one at https://github.com/gogf/gf.
|
2018-04-19 19:11:10 +08:00
|
|
|
|
|
|
|
|
|
package ghttp
|
|
|
|
|
|
|
|
|
|
import (
|
2019-06-19 09:06:52 +08:00
|
|
|
|
"fmt"
|
2018-04-19 19:11:10 +08:00
|
|
|
|
)
|
|
|
|
|
|
2019-08-26 20:09:24 +08:00
|
|
|
|
const (
|
2019-09-19 13:13:39 +08:00
|
|
|
|
gPATH_FILTER_KEY = "/net/ghttp/ghttp"
|
2019-08-26 20:09:24 +08:00
|
|
|
|
)
|
|
|
|
|
|
2018-04-19 19:11:10 +08:00
|
|
|
|
// 处理服务错误信息,主要是panic,http请求的status由access log进行管理
|
|
|
|
|
func (s *Server) handleAccessLog(r *Request) {
|
2019-06-19 09:06:52 +08:00
|
|
|
|
if !s.IsAccessLogEnabled() {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
scheme := "http"
|
|
|
|
|
if r.TLS != nil {
|
|
|
|
|
scheme = "https"
|
|
|
|
|
}
|
2019-11-15 22:50:31 +08:00
|
|
|
|
s.config.Logger.File(s.config.AccessLogPattern).StackWithFilter(gPATH_FILTER_KEY).Stdout(s.config.LogStdout).Printf(
|
|
|
|
|
`%d "%s %s %s %s %s" %.3f, %s, "%s", "%s"`,
|
2019-06-19 09:06:52 +08:00
|
|
|
|
r.Response.Status,
|
|
|
|
|
r.Method, scheme, r.Host, r.URL.String(), r.Proto,
|
2019-11-15 22:50:31 +08:00
|
|
|
|
float64(r.LeaveTime-r.EnterTime)/1000,
|
|
|
|
|
r.GetClientIp(), r.Referer(), r.UserAgent(),
|
2019-06-19 09:06:52 +08:00
|
|
|
|
)
|
2018-04-19 19:11:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理服务错误信息,主要是panic,http请求的status由access log进行管理
|
2019-09-14 22:53:28 +08:00
|
|
|
|
func (s *Server) handleErrorLog(err error, r *Request) {
|
2019-06-19 09:06:52 +08:00
|
|
|
|
// 错误输出默认是开启的
|
|
|
|
|
if !s.IsErrorLogEnabled() {
|
|
|
|
|
return
|
|
|
|
|
}
|
2018-10-10 18:39:57 +08:00
|
|
|
|
|
2019-06-19 09:06:52 +08:00
|
|
|
|
// 错误日志信息
|
2019-05-06 09:35:39 +08:00
|
|
|
|
scheme := "http"
|
|
|
|
|
if r.TLS != nil {
|
|
|
|
|
scheme = "https"
|
|
|
|
|
}
|
2019-09-14 22:53:28 +08:00
|
|
|
|
content := fmt.Sprintf(`%v, "%s %s %s %s %s"`, err, r.Method, scheme, r.Host, r.URL.String(), r.Proto)
|
2019-11-15 22:50:31 +08:00
|
|
|
|
content += fmt.Sprintf(` %.3f`, float64(r.LeaveTime-r.EnterTime)/1000)
|
2019-06-19 09:06:52 +08:00
|
|
|
|
content += fmt.Sprintf(`, %s, "%s", "%s"`, r.GetClientIp(), r.Referer(), r.UserAgent())
|
2019-11-15 22:50:31 +08:00
|
|
|
|
s.config.Logger.File(s.config.AccessLogPattern).Stack(s.config.ErrorStack).Stdout(s.config.LogStdout).Errorf(
|
|
|
|
|
`%v, "%s %s %s %s %s" %.3f, %s, "%s", "%s"`,
|
|
|
|
|
err, r.Method, scheme, r.Host, r.URL.String(), r.Proto,
|
|
|
|
|
float64(r.LeaveTime-r.EnterTime)/1000,
|
|
|
|
|
r.GetClientIp(), r.Referer(), r.UserAgent(),
|
|
|
|
|
)
|
2018-04-19 19:11:10 +08:00
|
|
|
|
}
|