Documentation
¶
Overview ¶
Package logfunc 提供一组预定义的 webapi.LogFunc ,以便快速实现 webapi.ApiLogger 。
每个 LogFunc 实现在对应单例的 F 方法上。
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Error = webapi.ToLogSetup(func(state *webapi.ApiState) { if state.Error == nil { return } logLevel, errTypeName, errDescription := webapi.DescribeError(state.Error) state.LogLevel = logLevel state.LogMessage = append(state.LogMessage, "ErrorType", errTypeName, "Error", errDescription, ) })
Error 根据当前的错误信息,判断错误的级别,并输出错误的描述信息。
输出字段为: ErrorType/Error 。
这是一个单例。
View Source
var Files = webapi.ToLogSetup(func(state *webapi.ApiState) { req := state.RawRequest if req.MultipartForm == nil { return } sortedFileHeaders := func(form *multipart.Form) []*multipart.FileHeader { ln := len(form.File) if ln == 0 { return nil } keys := make([]string, 0, ln) for k := range form.File { keys = append(keys, k) } sort.Strings(keys) var mergedHeaders []*multipart.FileHeader for i := 0; i < ln; i++ { headers := form.File[keys[i]] mergedHeaders = append(mergedHeaders, headers...) } return mergedHeaders } for i, f := range sortedFileHeaders(req.MultipartForm) { tag := strconv.Itoa(i) state.LogMessage = append(state.LogMessage, "File"+tag, f.Filename, "Length"+tag, f.Size, ) if f.Header != nil { if header, ok := f.Header[webapi.HttpHeaderContentType]; ok { state.LogMessage = append(state.LogMessage, "ContentType"+tag, header[0]) } } } })
Files 输出 [http.Request.MultipartForm] 中的文件概要信息。 该字段需要先通过 [http.Request.ParseMultipartForm] 初始化。
以此输出每个文件的(X 是文件的索引):
- FileX 文件名。
- LengthX 文件长度。
- ContentTypeX 文件的 Content-Type 。
不会输出非文件的部分。
这是一个单例。
View Source
var IP = webapi.ToLogSetup(func(state *webapi.ApiState) { state.LogMessage = append(state.LogMessage, "IP", state.UserHost) })
IP 输出发起 HTTP 请求的客户端 IP 地址。
输出字段为: IP 。
这是一个单例。
View Source
var URL = webapi.ToLogSetup(func(state *webapi.ApiState) { state.LogMessage = append(state.LogMessage, "URL", state.RawRequest.RequestURI) })
URL 输出请求的完整 URL 。
输出字段为: URL 。
这是一个单例。
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.