logfunc

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2022 License: MIT Imports: 4 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL