mirror of
https://gitee.com/johng/gf
synced 2026-07-06 13:42:46 +08:00
ghttp.Server 日志功能完善
This commit is contained in:
@ -56,7 +56,8 @@ type Server struct {
|
||||
logPath *gtype.String // 存放日志的目录路径
|
||||
errorLogEnabled *gtype.Bool // 是否开启error log
|
||||
accessLogEnabled *gtype.Bool // 是否开启access log
|
||||
logger *glog.Logger // 日志对象
|
||||
accessLogger *glog.Logger // access log日志对象
|
||||
errorLogger *glog.Logger // error log日志对象
|
||||
logHandler *gtype.Interface // 自定义的日志处理回调方法
|
||||
}
|
||||
|
||||
@ -108,10 +109,12 @@ func GetServer(names...string) (*Server) {
|
||||
logPath : gtype.NewString(),
|
||||
accessLogEnabled : gtype.NewBool(),
|
||||
errorLogEnabled : gtype.NewBool(),
|
||||
logger : glog.New(),
|
||||
accessLogger : glog.New(),
|
||||
errorLogger : glog.New(),
|
||||
logHandler : gtype.NewInterface(),
|
||||
}
|
||||
s.logger.SetBacktraceSkip(4)
|
||||
s.errorLogger.SetBacktraceSkip(4)
|
||||
s.accessLogger.SetBacktraceSkip(4)
|
||||
// 设置路由解析缓存上限,使用LRU进行缓存淘汰
|
||||
s.hooksCache.SetCap(10000)
|
||||
s.handlerCache.SetCap(10000)
|
||||
|
||||
@ -25,7 +25,7 @@ func (s *Server) handleAccessLog(r *Request) {
|
||||
}
|
||||
content := fmt.Sprintf(`"%s %s %s %s" %s %s`, r.Method, r.Host, r.URL.String(), r.Proto, gconv.String(r.Response.status), gconv.String(r.Response.length))
|
||||
content += fmt.Sprintf(`, %s, "%s", "%s"`, r.GetClientIp(), r.Referer(), r.UserAgent())
|
||||
s.logger.Println(content)
|
||||
s.accessLogger.Println(content)
|
||||
}
|
||||
|
||||
// 处理服务错误信息,主要是panic,http请求的status由access log进行管理
|
||||
@ -44,5 +44,5 @@ func (s *Server) handleErrorLog(error interface{}, r *Request) {
|
||||
content := fmt.Sprintf(`"%s %s %s %s"`, r.Method, r.Host, r.URL.String(), r.Proto)
|
||||
content += fmt.Sprintf(`, %s, "%s", "%s"`, r.GetClientIp(), r.Referer(), r.UserAgent())
|
||||
content += fmt.Sprintf(`, %v`, error)
|
||||
s.logger.Error(content)
|
||||
s.errorLogger.Error(content)
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ import (
|
||||
"net/http"
|
||||
"crypto/tls"
|
||||
"path/filepath"
|
||||
"gitee.com/johng/gf/g/os/gfile"
|
||||
)
|
||||
|
||||
// http server setting设置
|
||||
@ -157,7 +158,12 @@ func (s *Server)SetSessionIdName(name string) {
|
||||
|
||||
// 设置日志目录
|
||||
func (s *Server)SetLogPath(path string) error {
|
||||
if err := s.logger.SetPath(path); err != nil {
|
||||
errorLogPath := strings.TrimRight(path, gfile.Separator) + gfile.Separator + "error"
|
||||
accessLogPath := strings.TrimRight(path, gfile.Separator) + gfile.Separator + "access"
|
||||
if err := s.accessLogger.SetPath(accessLogPath); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.errorLogger.SetPath(errorLogPath); err != nil {
|
||||
return err
|
||||
}
|
||||
s.logPath.Set(path)
|
||||
|
||||
@ -57,6 +57,7 @@ func New(path string, flag int, expire int) *Pool {
|
||||
flag : flag,
|
||||
list : glist.New(),
|
||||
idle : expire,
|
||||
closed : gtype.NewBool(),
|
||||
}
|
||||
// 独立的线程执行过期清理工作
|
||||
if expire != -1 {
|
||||
|
||||
@ -6,10 +6,10 @@ import (
|
||||
|
||||
func main() {
|
||||
s := ghttp.GetServer()
|
||||
s.BindHandler("/", func(r *ghttp.Request){
|
||||
s.BindHandler("/log/test", func(r *ghttp.Request){
|
||||
r.Response.Writeln("哈喽世界!")
|
||||
panic("test")
|
||||
})
|
||||
s.SetLogPath("/tmp/gf.log")
|
||||
s.SetAccessLogEnabled(true)
|
||||
s.SetErrorLogEnabled(true)
|
||||
s.SetPort(8199)
|
||||
|
||||
Reference in New Issue
Block a user