etcdhttp: use leveled logging

release-2.1
Xiang Li 2015-06-08 14:11:21 -07:00
parent e0d5116683
commit 0adeee2965
4 changed files with 29 additions and 29 deletions

View File

@ -20,7 +20,6 @@ import (
"expvar"
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
"path"
@ -147,7 +146,7 @@ func (h *keysHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
case resp.Event != nil:
if err := writeKeyEvent(w, resp.Event, h.timer); err != nil {
// Should never be reached
log.Printf("error writing event: %v", err)
plog.Errorf("error writing event (%v)", err)
}
case resp.Watcher != nil:
ctx, cancel := context.WithTimeout(context.Background(), defaultWatchTimeout)
@ -197,7 +196,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
mc := newMemberCollection(h.cluster.Members())
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(mc); err != nil {
log.Printf("etcdhttp: %v", err)
plog.Warningf("failed to encode members response (%v)", err)
}
case "leader":
id := h.server.Leader()
@ -208,7 +207,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
m := newMember(h.cluster.Member(id))
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(m); err != nil {
log.Printf("etcdhttp: %v", err)
plog.Warningf("failed to encode members response (%v)", err)
}
default:
writeError(w, httptypes.NewHTTPError(http.StatusNotFound, "Not found"))
@ -226,7 +225,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
writeError(w, httptypes.NewHTTPError(http.StatusConflict, err.Error()))
return
case err != nil:
log.Printf("etcdhttp: error adding node %s: %v", m.ID, err)
plog.Errorf("error adding member %s (%v)", m.ID, err)
writeError(w, err)
return
}
@ -234,7 +233,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
if err := json.NewEncoder(w).Encode(res); err != nil {
log.Printf("etcdhttp: %v", err)
plog.Warningf("failed to encode members response (%v)", err)
}
case "DELETE":
id, ok := getID(r.URL.Path, w)
@ -248,7 +247,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
case err == etcdserver.ErrIDNotFound:
writeError(w, httptypes.NewHTTPError(http.StatusNotFound, fmt.Sprintf("No such member: %s", id)))
case err != nil:
log.Printf("etcdhttp: error removing node %s: %v", id, err)
plog.Errorf("error removing member %s (%v)", id, err)
writeError(w, err)
default:
w.WriteHeader(http.StatusNoContent)
@ -273,7 +272,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
case err == etcdserver.ErrIDNotFound:
writeError(w, httptypes.NewHTTPError(http.StatusNotFound, fmt.Sprintf("No such member: %s", id)))
case err != nil:
log.Printf("etcdhttp: error updating node %s: %v", m.ID, err)
plog.Errorf("error updating member %s (%v)", m.ID, err)
writeError(w, err)
default:
w.WriteHeader(http.StatusNoContent)
@ -379,7 +378,7 @@ func serveVersion(w http.ResponseWriter, r *http.Request, clusterV string) {
b, err := json.Marshal(&vs)
if err != nil {
log.Panicf("version: cannot marshal versions to json (%v)", err)
plog.Panicf("cannot marshal versions to json (%v)", err)
}
w.Write(b)
}
@ -585,7 +584,7 @@ func handleKeyWatch(ctx context.Context, w http.ResponseWriter, wa store.Watcher
ev = trimEventPrefix(ev, etcdserver.StoreKeysPrefix)
if err := json.NewEncoder(w).Encode(ev); err != nil {
// Should never be reached
log.Printf("error writing event: %v\n", err)
plog.Warningf("error writing event (%v)", err)
return
}
if !stream {

View File

@ -16,7 +16,6 @@ package etcdhttp
import (
"encoding/json"
"log"
"net/http"
"path"
"strings"
@ -57,7 +56,7 @@ func hasRootAccess(sec *security.Store, r *http.Request) bool {
}
ok = rootUser.CheckPassword(password)
if !ok {
log.Printf("security: Wrong password for user %s", username)
plog.Warningf("security: wrong password for user %s", username)
return false
}
for _, role := range rootUser.Roles {
@ -65,7 +64,7 @@ func hasRootAccess(sec *security.Store, r *http.Request) bool {
return true
}
}
log.Printf("security: User %s does not have the %s role for resource %s.", username, security.RootRoleName, r.URL.Path)
plog.Warningf("security: user %s does not have the %s role for resource %s.", username, security.RootRoleName, r.URL.Path)
return false
}
@ -83,12 +82,12 @@ func hasKeyPrefixAccess(sec *security.Store, r *http.Request, key string, recurs
}
user, err := sec.GetUser(username)
if err != nil {
log.Printf("security: No such user: %s.", username)
plog.Warningf("security: no such user: %s.", username)
return false
}
authAsUser := user.CheckPassword(password)
if !authAsUser {
log.Printf("security: Incorrect password for user: %s.", username)
plog.Warningf("security: incorrect password for user: %s.", username)
return false
}
writeAccess := r.Method != "GET" && r.Method != "HEAD"
@ -102,7 +101,7 @@ func hasKeyPrefixAccess(sec *security.Store, r *http.Request, key string, recurs
}
return role.HasKeyAccess(key, writeAccess)
}
log.Printf("security: Invalid access for user %s on key %s.", username, key)
plog.Warningf("security: invalid access for user %s on key %s.", username, key)
return false
}
@ -115,7 +114,7 @@ func hasGuestAccess(sec *security.Store, r *http.Request, key string) bool {
if role.HasKeyAccess(key, writeAccess) {
return true
}
log.Printf("security: Invalid access for unauthenticated user on resource %s.", key)
plog.Warningf("security: invalid access for unauthenticated user on resource %s.", key)
return false
}
@ -157,7 +156,7 @@ func (sh *securityHandler) baseRoles(w http.ResponseWriter, r *http.Request) {
rolesCollections.Roles = roles
err = json.NewEncoder(w).Encode(rolesCollections)
if err != nil {
log.Println("etcdhttp: baseRoles error encoding on", r.URL)
plog.Warningf("baseRoles error encoding on %s", r.URL)
}
}
@ -197,7 +196,7 @@ func (sh *securityHandler) forRole(w http.ResponseWriter, r *http.Request, role
}
err = json.NewEncoder(w).Encode(data)
if err != nil {
log.Println("etcdhttp: forRole error encoding on", r.URL)
plog.Warningf("forRole error encoding on %s", r.URL)
return
}
return
@ -224,7 +223,7 @@ func (sh *securityHandler) forRole(w http.ResponseWriter, r *http.Request, role
}
err = json.NewEncoder(w).Encode(newrole)
if err != nil {
log.Println("etcdhttp: forRole error encoding on", r.URL)
plog.Warningf("forRole error encoding on %s", r.URL)
return
}
return
@ -262,7 +261,7 @@ func (sh *securityHandler) baseUsers(w http.ResponseWriter, r *http.Request) {
usersCollections.Users = users
err = json.NewEncoder(w).Encode(usersCollections)
if err != nil {
log.Println("etcdhttp: baseUsers error encoding on", r.URL)
plog.Warningf("baseUsers error encoding on %s", r.URL)
}
}
@ -304,7 +303,7 @@ func (sh *securityHandler) forUser(w http.ResponseWriter, r *http.Request, user
err = json.NewEncoder(w).Encode(u)
if err != nil {
log.Println("etcdhttp: forUser error encoding on", r.URL)
plog.Warningf("forUser error encoding on %s", r.URL)
return
}
return
@ -335,7 +334,7 @@ func (sh *securityHandler) forUser(w http.ResponseWriter, r *http.Request, user
}
err = json.NewEncoder(w).Encode(newuser)
if err != nil {
log.Println("etcdhttp: forUser error encoding on", r.URL)
plog.Warningf("forUser error encoding on %s", r.URL)
return
}
return
@ -368,7 +367,7 @@ func (sh *securityHandler) enableDisable(w http.ResponseWriter, r *http.Request)
jsonDict := enabled{isEnabled}
err := json.NewEncoder(w).Encode(jsonDict)
if err != nil {
log.Println("etcdhttp: error encoding security state on", r.URL)
plog.Warningf("error encoding security state on %s", r.URL)
}
case "PUT":
err := sh.sec.EnableSecurity()

View File

@ -16,12 +16,12 @@ package etcdhttp
import (
"errors"
"log"
"math"
"net/http"
"strings"
"time"
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
etcdErr "github.com/coreos/etcd/error"
"github.com/coreos/etcd/etcdserver/etcdhttp/httptypes"
"github.com/coreos/etcd/etcdserver/security"
@ -38,7 +38,10 @@ const (
defaultWatchTimeout = time.Duration(math.MaxInt64)
)
var errClosed = errors.New("etcdhttp: client closed connection")
var (
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcdhttp")
errClosed = errors.New("etcdhttp: client closed connection")
)
// writeError logs and writes the given Error to the ResponseWriter
// If Error is an etcdErr, it is rendered to the ResponseWriter
@ -56,7 +59,7 @@ func writeError(w http.ResponseWriter, err error) {
herr := httptypes.NewHTTPError(http.StatusBadRequest, e.Error())
herr.WriteTo(w)
default:
log.Printf("etcdhttp: unexpected error: %v", err)
plog.Errorf("got unexpected response error (%v)", err)
herr := httptypes.NewHTTPError(http.StatusInternalServerError, "Internal Server Error")
herr.WriteTo(w)
}

View File

@ -16,7 +16,6 @@ package etcdhttp
import (
"encoding/json"
"log"
"net/http"
"github.com/coreos/etcd/etcdserver"
@ -59,6 +58,6 @@ func (h *peerMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ms := h.cluster.Members()
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(ms); err != nil {
log.Printf("etcdhttp: %v", err)
plog.Warningf("failed to encode members response (%v)", err)
}
}