func Header(headerName, keyName string) LoggerFunc {
	headerName = textproto.CanonicalMIMEHeaderKey(headerName)
	return func(kv []interface{}, request *http.Request) []interface{} {
		values := request.Header[headerName]
		switch len(values) {
		case 0:
			return append(kv, keyName, "")
		case 1:
			return append(kv, keyName, values[0])
		default:
			return append(kv, keyName, values)
		}
	}
}
Header returns a logger func that extracts the value of a header and inserts it as the
value of a logging key.  If the header is not present in the request, a blank string
is set as the logging key's value.
package logginghttp
import (
	"context"
	"net/http"
	"net/textproto"
	"github.com/go-kit/kit/log"
	"github.com/gorilla/mux"
	"github.com/xmidt-org/webpa-common/v2/logging"
)
var (
	requestMethodKey interface{} = "requestMethod"
	requestURIKey    interface{} = "requestURI"
	remoteAddrKey    interface{} = "remoteAddr"
)
func RequestMethodKey() interface{} {
	return requestMethodKey
}
func RequestURIKey() interface{} {
	return requestURIKey
}
func RemoteAddrKey() interface{} {
	return remoteAddrKey
}
type LoggerFunc func([]interface{}, *http.Request) []interface{}
func RequestInfo(kv []interface{}, request *http.Request) []interface{} {
	return append(kv,
		requestMethodKey, request.Method,
		requestURIKey, request.RequestURI,
		remoteAddrKey, request.RemoteAddr,
	)
}