本文整理匯總了Golang中github.com/app-kit/go-appkit.Registry.Logger方法的典型用法代碼示例。如果您正苦於以下問題:Golang Registry.Logger方法的具體用法?Golang Registry.Logger怎麽用?Golang Registry.Logger使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/app-kit/go-appkit.Registry
的用法示例。
在下文中一共展示了Registry.Logger方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: SerializeResponseMiddleware
func SerializeResponseMiddleware(registry kit.Registry, request kit.Request, response kit.Response) (kit.Response, bool) {
// Try to serialize the reponse data.
// Determine serializer.
serializer := registry.DefaultSerializer()
// Check if a custom serializer was specified.
if name := request.GetContext().String("response-serializer"); name != "" {
serializer = registry.Serializer(name)
if serializer == nil {
errResp := kit.NewErrorResponse("unknown_response_serializer", true)
data, _ := serializer.MustSerializeResponse(errResp)
errResp.SetData(data)
return errResp, false
}
}
// Set format in metadata.
meta := response.GetMeta()
if meta == nil {
meta = make(map[string]interface{})
}
meta["format"] = serializer.Name()
response.SetMeta(meta)
data, err := serializer.MustSerializeResponse(response)
if err != nil {
registry.Logger().Errorf("Response serialization error: %v (%+v)", err, response)
}
response.SetData(data)
return nil, false
}
示例2: ServerErrorMiddleware
func ServerErrorMiddleware(registry kit.Registry, r kit.Request, response kit.Response) (kit.Response, bool) {
err := response.GetError()
if err == nil {
return nil, false
}
status := 500
// If the error is an apperror, and it contains a status,
// set it as the http status of the response.
if apperr, ok := err.(apperror.Error); ok {
if apperr.GetStatus() != 0 {
status = apperr.GetStatus()
}
}
response.SetHttpStatus(status)
if response.GetRawData() != nil || response.GetRawDataReader() != nil {
return nil, false
}
httpRequest := r.GetHttpRequest()
apiPrefix := "/" + registry.Config().UString("api.prefix", "api")
isApiRequest := strings.HasPrefix(httpRequest.URL.Path, apiPrefix)
if isApiRequest {
return nil, false
}
data := map[string]interface{}{"errors": []error{response.GetError()}}
tpl := defaultErrorTpl()
tplPath := registry.Config().UString("frontend.errorTemplate")
if tplPath != "" {
t, err := template.ParseFiles(tplPath)
if err != nil {
registry.Logger().Fatalf("Could not parse error template at '%v': %v", tplPath, err)
} else {
tpl = t
}
}
var buffer *bytes.Buffer
if err := tpl.Execute(buffer, data); err != nil {
registry.Logger().Fatalf("Could not render error template: %v\n", err)
response.SetRawData([]byte("Server error"))
} else {
response.SetRawData(buffer.Bytes())
}
return nil, false
}
示例3: RequestLoggerMiddleware
func RequestLoggerMiddleware(registry kit.Registry, r kit.Request, response kit.Response) (kit.Response, bool) {
// Calculate time taken.
rawStarted, ok1 := r.GetContext().Get("startTime")
rawFinished, ok2 := r.GetContext().Get("endTime")
timeTaken := int64(-1)
if ok1 && ok2 {
started := rawStarted.(time.Time)
finished := rawFinished.(time.Time)
timeTaken = int64(finished.Sub(started) / time.Millisecond)
}
// Log the request.
method := r.GetHttpMethod()
path := r.GetPath()
if response.GetError() != nil {
registry.Logger().WithFields(logrus.Fields{
"frontend": r.GetFrontend(),
"action": "request",
"method": method,
"path": path,
"status": response.GetHttpStatus(),
"err": response.GetError(),
"milliseconds": timeTaken,
}).Errorf("%v: %v - %v - %v", response.GetHttpStatus(), method, path, response.GetError())
} else {
registry.Logger().WithFields(logrus.Fields{
"frontend": r.GetFrontend(),
"action": "request",
"method": method,
"path": path,
"status": response.GetHttpStatus(),
"milliseconds": timeTaken,
}).Debugf("%v: %v - %v", response.GetHttpStatus(), method, path)
}
return nil, false
}
示例4: serverRenderer
func serverRenderer(registry kit.Registry, r kit.Request) kit.Response {
url := r.GetHttpRequest().URL
// Build the url to query.
if url.Scheme == "" {
url.Scheme = "http"
}
if url.Host == "" {
url.Host = registry.Config().UString("host", "localhost") + ":" + registry.Config().UString("port", "8000")
}
q := url.Query()
q.Set("no-server-render", "1")
url.RawQuery = q.Encode()
strUrl := url.String()
cacheKey := "serverrenderer_" + strUrl
cacheName := registry.Config().UString("serverRenderer.cache")
var cache kit.Cache
// If a cache is specified, try to retrieve it.
if cacheName != "" {
cache = registry.Cache(cacheName)
if cache == nil {
registry.Logger().Errorf("serverRenderer.cache is set to %v, but the cache is not registered with app", cacheName)
}
}
// If a cache was found, try to retrieve cached response.
if cache != nil {
item, err := cache.Get(cacheKey)
if err != nil {
registry.Logger().Errorf("serverRenderer: cache retrieval error: %v", err)
} else if item != nil {
// Cache item found, return response with cache item.
status, _ := strconv.ParseInt(item.GetTags()[0], 10, 64)
data, _ := item.ToString()
return &kit.AppResponse{
HttpStatus: int(status),
RawData: []byte(data),
}
}
}
// Either no cache or url not yet cached, so render it.
// First, ensure that the tmp directory exists.
tmpDir := path.Join(registry.Config().TmpDir(), "phantom")
if ok, _ := utils.FileExists(tmpDir); !ok {
if err := os.MkdirAll(tmpDir, 0777); err != nil {
return &kit.AppResponse{
Error: &apperror.Err{
Code: "create_tmp_dir_failed",
Message: fmt.Sprintf("Could not create the tmp directory at %v: %v", tmpDir, err),
},
}
}
}
// Build a unique file name.
filePath := path.Join(tmpDir, utils.UUIdv4()+".html")
// Execute phantom js.
// Find path of phantom script.
_, filename, _, _ := runtime.Caller(1)
scriptPath := path.Join(path.Dir(path.Dir(filename)), "phantom", "render.js")
start := time.Now()
phantomPath := registry.Config().UString("serverRenderer.phantomJsPath", "phantomjs")
args := []string{
"--web-security=false",
"--local-to-remote-url-access=true",
scriptPath,
"10",
strUrl,
filePath,
}
result, err := exec.Command(phantomPath, args...).CombinedOutput()
if err != nil {
registry.Logger().Errorf("Phantomjs execution error: %v", string(result))
return &kit.AppResponse{
Error: apperror.Wrap(err, "phantom_execution_failed"),
}
}
// Get time taken as milliseconds.
timeTaken := int(time.Now().Sub(start) / time.Millisecond)
registry.Logger().WithFields(log.Fields{
"action": "phantomjs_render",
"milliseconds": timeTaken,
}).Debugf("Rendered url %v with phantomjs", url)
content, err2 := utils.ReadFile(filePath)
if err2 != nil {
//.........這裏部分代碼省略.........
示例5: HttpHandler
func HttpHandler(w http.ResponseWriter, r *http.Request, params httprouter.Params, registry kit.Registry, handler kit.RequestHandler) {
config := registry.Config()
header := w.Header()
// Set Access-Control headers.
allowedOrigins := config.UString("accessControl.allowedOrigins", "*")
header.Set("Access-Control-Allow-Origin", allowedOrigins)
methods := config.UString("accessControl.allowedMethods", "GET, POST, PUT, DELETE, OPTIONS, PATCH")
header.Set("Access-Control-Allow-Methods", methods)
allowedHeaders := config.UString("accessControl.allowedHeaders", "Authentication, Content-Type, X-Requested-With, Accept, Accept-Language, Content-Language")
header.Set("Access-Control-Allow-Headers", allowedHeaders)
// If it is an options request, just respond with 200.
if r.Method == "OPTIONS" {
w.WriteHeader(200)
return
}
request := kit.NewRequest()
request.SetFrontend("http")
request.SetPath(r.URL.String())
request.SetHttpMethod(r.Method)
request.SetHttpRequest(r)
request.SetHttpResponseWriter(w)
for _, param := range params {
request.Context.Set(param.Key, param.Value)
}
queryVals := r.URL.Query()
for key := range queryVals {
vals := queryVals[key]
if len(vals) == 1 {
request.Context.Set(key, vals[0])
} else {
request.Context.Set(key, vals)
}
}
response, skip := processRequest(registry, request, handler)
if skip {
return
}
// If a data reader is set, write the data of the reader.
reader := response.GetRawDataReader()
if reader != nil {
w.WriteHeader(response.GetHttpStatus())
io.Copy(w, reader)
reader.Close()
return
}
// If raw data is set, write the raw data.
rawData := response.GetRawData()
if rawData != nil {
w.WriteHeader(response.GetHttpStatus())
w.Write(rawData)
return
}
registry.Logger().Panicf("Invalid response with no raw data: %+v", response)
}