ghttp.Server 日志功能完善

This commit is contained in:
John
2018-04-20 18:12:47 +08:00
parent 1c29ae66be
commit e42bbb46f9
5 changed files with 18 additions and 8 deletions

View File

@ -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)

View File

@ -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)
}
// 处理服务错误信息主要是panichttp请求的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)
}

View File

@ -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)

View File

@ -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 {

View File

@ -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)