RIC-961:implement Xn and X2 component IDs correctly in E2M
[ric-plt/e2mgr.git] / tools / KubernetesSimulator / go / logger.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16
17 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 //  platform project (RICP).
19
20
21 package kubernetes
22
23 import (
24         "bytes"
25         "encoding/json"
26         "io/ioutil"
27         "log"
28         "net/http"
29         "time"
30 )
31
32 func Logger(inner http.Handler, name string) http.Handler {
33         return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
34                 start := time.Now()
35
36                 inner.ServeHTTP(w, r)
37
38                 body, err := ioutil.ReadAll(r.Body)
39                 if err != nil {
40                         log.Printf("Error reading body: %v", err)
41                         http.Error(w, "can't read body", http.StatusBadRequest)
42                         return
43                 }
44
45                 buffer := new(bytes.Buffer)
46                 _ =json.Compact(buffer, body)
47
48                 log.Printf(
49                         "%s %s  body: %s elapsed: %s",
50                         r.Method,
51                         r.RequestURI,
52                         buffer,
53                         time.Since(start),
54                 )
55         })
56 }