Move to "github.com/hashicorp/go-hclog" (#4227)

* logbridge with hclog and identical output

* Initial search & replace

This compiles, but there is a fair amount of TODO
and commented out code, especially around the
plugin logclient/logserver code.

* strip logbridge

* fix majority of tests

* update logxi aliases

* WIP fixing tests

* more test fixes

* Update test to hclog

* Fix format

* Rename hclog -> log

* WIP making hclog and logxi love each other

* update logger_test.go

* clean up merged comments

* Replace RawLogger interface with a Logger

* Add some logger names

* Replace Trace with Debug

* update builtin logical logging patterns

* Fix build errors

* More log updates

* update log approach in command and builtin

* More log updates

* update helper, http, and logical directories

* Update loggers

* Log updates

* Update logging

* Update logging

* Update logging

* Update logging

* update logging in physical

* prefixing and lowercase

* Update logging

* Move phyisical logging name to server command

* Fix som tests

* address jims feedback so far

* incorporate brians feedback so far

* strip comments

* move vault.go to logging package

* update Debug to Trace

* Update go-plugin deps

* Update logging based on review comments

* Updates from review

* Unvendor logxi

* Remove null_logger.go
This commit is contained in:
Becca Petrin 2018-04-02 17:46:59 -07:00 committed by Brian Kassouf
parent 3f5d60b54b
commit 03cf302e9a
160 changed files with 1084 additions and 3437 deletions

View file

@ -18,10 +18,11 @@ import (
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
log "github.com/hashicorp/go-hclog"
auditFile "github.com/hashicorp/vault/builtin/audit/file" auditFile "github.com/hashicorp/vault/builtin/audit/file"
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass" credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
logxi "github.com/mgutz/logxi/v1"
dockertest "gopkg.in/ory-am/dockertest.v3" dockertest "gopkg.in/ory-am/dockertest.v3"
) )
@ -42,7 +43,7 @@ func testVaultServerUnseal(t testing.TB) (*api.Client, []string, func()) {
return testVaultServerCoreConfig(t, &vault.CoreConfig{ return testVaultServerCoreConfig(t, &vault.CoreConfig{
DisableMlock: true, DisableMlock: true,
DisableCache: true, DisableCache: true,
Logger: logxi.NullLog, Logger: log.NewNullLogger(),
CredentialBackends: map[string]logical.Factory{ CredentialBackends: map[string]logical.Factory{
"userpass": credUserpass.Factory, "userpass": credUserpass.Factory,
}, },

View file

@ -21,9 +21,8 @@ import (
"testing" "testing"
"time" "time"
logxi "github.com/mgutz/logxi/v1"
cleanhttp "github.com/hashicorp/go-cleanhttp" cleanhttp "github.com/hashicorp/go-cleanhttp"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
@ -159,7 +158,7 @@ func TestBackend_PermittedDNSDomainsIntermediateCA(t *testing.T) {
coreConfig := &vault.CoreConfig{ coreConfig := &vault.CoreConfig{
DisableMlock: true, DisableMlock: true,
DisableCache: true, DisableCache: true,
Logger: logxi.NullLog, Logger: log.NewNullLogger(),
CredentialBackends: map[string]logical.Factory{ CredentialBackends: map[string]logical.Factory{
"cert": Factory, "cert": Factory,
}, },

View file

@ -337,7 +337,7 @@ func (b *backend) loadTrustedCerts(ctx context.Context, storage logical.Storage,
trustedNonCAs = make([]*ParsedCert, 0) trustedNonCAs = make([]*ParsedCert, 0)
names, err := storage.List(ctx, "cert/") names, err := storage.List(ctx, "cert/")
if err != nil { if err != nil {
b.Logger().Error("cert: failed to list trusted certs", "error", err) b.Logger().Error("failed to list trusted certs", "error", err)
return return
} }
for _, name := range names { for _, name := range names {
@ -347,12 +347,12 @@ func (b *backend) loadTrustedCerts(ctx context.Context, storage logical.Storage,
} }
entry, err := b.Cert(ctx, storage, strings.TrimPrefix(name, "cert/")) entry, err := b.Cert(ctx, storage, strings.TrimPrefix(name, "cert/"))
if err != nil { if err != nil {
b.Logger().Error("cert: failed to load trusted cert", "name", name, "error", err) b.Logger().Error("failed to load trusted cert", "name", name, "error", err)
continue continue
} }
parsed := parsePEM([]byte(entry.Certificate)) parsed := parsePEM([]byte(entry.Certificate))
if len(parsed) == 0 { if len(parsed) == 0 {
b.Logger().Error("cert: failed to parse certificate", "name", name) b.Logger().Error("failed to parse certificate", "name", name)
continue continue
} }
if !parsed[0].IsCA { if !parsed[0].IsCA {

View file

@ -121,7 +121,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
} }
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: User BindDN fetched", "username", username, "binddn", userBindDN) b.Logger().Debug("user binddn fetched", "username", username, "binddn", userBindDN)
} }
if cfg.DenyNullBind && len(password) == 0 { if cfg.DenyNullBind && len(password) == 0 {
@ -145,7 +145,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
return nil, logical.ErrorResponse(fmt.Sprintf("Encountered an error while attempting to re-bind with the BindDN User: %s", err.Error())), nil, nil return nil, logical.ErrorResponse(fmt.Sprintf("Encountered an error while attempting to re-bind with the BindDN User: %s", err.Error())), nil, nil
} }
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Re-Bound to original BindDN") b.Logger().Debug("re-bound to original binddn")
} }
} }
@ -159,7 +159,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
return nil, logical.ErrorResponse(err.Error()), nil, nil return nil, logical.ErrorResponse(err.Error()), nil, nil
} }
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Groups fetched from server", "num_server_groups", len(ldapGroups), "server_groups", ldapGroups) b.Logger().Debug("groups fetched from server", "num_server_groups", len(ldapGroups), "server_groups", ldapGroups)
} }
ldapResponse := &logical.Response{ ldapResponse := &logical.Response{
@ -177,7 +177,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
user, err := b.User(ctx, req.Storage, username) user, err := b.User(ctx, req.Storage, username)
if err == nil && user != nil && user.Groups != nil { if err == nil && user != nil && user.Groups != nil {
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups) b.Logger().Debug("adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
} }
allGroups = append(allGroups, user.Groups...) allGroups = append(allGroups, user.Groups...)
} }
@ -260,7 +260,7 @@ func (b *backend) getUserBindDN(cfg *ConfigEntry, c *ldap.Conn, username string)
filter := fmt.Sprintf("(%s=%s)", cfg.UserAttr, ldap.EscapeFilter(username)) filter := fmt.Sprintf("(%s=%s)", cfg.UserAttr, ldap.EscapeFilter(username))
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Discovering user", "userdn", cfg.UserDN, "filter", filter) b.Logger().Debug("discovering user", "userdn", cfg.UserDN, "filter", filter)
} }
result, err := c.Search(&ldap.SearchRequest{ result, err := c.Search(&ldap.SearchRequest{
BaseDN: cfg.UserDN, BaseDN: cfg.UserDN,
@ -295,7 +295,7 @@ func (b *backend) getUserDN(cfg *ConfigEntry, c *ldap.Conn, bindDN string) (stri
// Find the distinguished name for the user if userPrincipalName used for login // Find the distinguished name for the user if userPrincipalName used for login
filter := fmt.Sprintf("(userPrincipalName=%s)", ldap.EscapeFilter(bindDN)) filter := fmt.Sprintf("(userPrincipalName=%s)", ldap.EscapeFilter(bindDN))
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Searching UPN", "userdn", cfg.UserDN, "filter", filter) b.Logger().Debug("searching upn", "userdn", cfg.UserDN, "filter", filter)
} }
result, err := c.Search(&ldap.SearchRequest{ result, err := c.Search(&ldap.SearchRequest{
BaseDN: cfg.UserDN, BaseDN: cfg.UserDN,
@ -339,19 +339,19 @@ func (b *backend) getLdapGroups(cfg *ConfigEntry, c *ldap.Conn, userDN string, u
ldapMap := make(map[string]bool) ldapMap := make(map[string]bool)
if cfg.GroupFilter == "" { if cfg.GroupFilter == "" {
b.Logger().Warn("auth/ldap: GroupFilter is empty, will not query server") b.Logger().Warn("groupfilter is empty, will not query server")
return make([]string, 0), nil return make([]string, 0), nil
} }
if cfg.GroupDN == "" { if cfg.GroupDN == "" {
b.Logger().Warn("auth/ldap: GroupDN is empty, will not query server") b.Logger().Warn("groupdn is empty, will not query server")
return make([]string, 0), nil return make([]string, 0), nil
} }
// If groupfilter was defined, resolve it as a Go template and use the query for // If groupfilter was defined, resolve it as a Go template and use the query for
// returning the user's groups // returning the user's groups
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Compiling group filter", "group_filter", cfg.GroupFilter) b.Logger().Debug("compiling group filter", "group_filter", cfg.GroupFilter)
} }
// Parse the configuration as a template. // Parse the configuration as a template.
@ -374,7 +374,7 @@ func (b *backend) getLdapGroups(cfg *ConfigEntry, c *ldap.Conn, userDN string, u
t.Execute(&renderedQuery, context) t.Execute(&renderedQuery, context)
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/ldap: Searching", "groupdn", cfg.GroupDN, "rendered_query", renderedQuery.String()) b.Logger().Debug("searching", "groupdn", cfg.GroupDN, "rendered_query", renderedQuery.String())
} }
result, err := c.Search(&ldap.SearchRequest{ result, err := c.Search(&ldap.SearchRequest{

View file

@ -12,11 +12,11 @@ import (
"text/template" "text/template"
"github.com/go-ldap/ldap" "github.com/go-ldap/ldap"
log "github.com/hashicorp/go-hclog"
multierror "github.com/hashicorp/go-multierror" multierror "github.com/hashicorp/go-multierror"
"github.com/hashicorp/vault/helper/tlsutil" "github.com/hashicorp/vault/helper/tlsutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/framework" "github.com/hashicorp/vault/logical/framework"
log "github.com/mgutz/logxi/v1"
) )
func pathConfig(b *backend) *framework.Path { func pathConfig(b *backend) *framework.Path {
@ -427,7 +427,7 @@ func (c *ConfigEntry) DialLDAP() (*ldap.Conn, error) {
if err == nil { if err == nil {
if retErr != nil { if retErr != nil {
if c.logger.IsDebug() { if c.logger.IsDebug() {
c.logger.Debug("ldap: errors connecting to some hosts: %s", retErr.Error()) c.logger.Debug("errors connecting to some hosts: %s", retErr.Error())
} }
} }
retErr = nil retErr = nil

View file

@ -115,13 +115,13 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
switch result.Status { switch result.Status {
case "LOCKED_OUT": case "LOCKED_OUT":
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: user is locked out", "user", username) b.Logger().Debug("user is locked out", "user", username)
} }
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
case "PASSWORD_EXPIRED": case "PASSWORD_EXPIRED":
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: password is expired", "user", username) b.Logger().Debug("password is expired", "user", username)
} }
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
@ -131,7 +131,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
case "MFA_ENROLL", "MFA_ENROLL_ACTIVATE": case "MFA_ENROLL", "MFA_ENROLL_ACTIVATE":
if !cfg.BypassOktaMFA { if !cfg.BypassOktaMFA {
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: user must enroll or complete mfa enrollment", "user", username) b.Logger().Debug("user must enroll or complete mfa enrollment", "user", username)
} }
return nil, logical.ErrorResponse("okta authentication failed: you must complete MFA enrollment to continue"), nil, nil return nil, logical.ErrorResponse("okta authentication failed: you must complete MFA enrollment to continue"), nil, nil
} }
@ -204,7 +204,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
// Allowed // Allowed
default: default:
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: unhandled result status", "status", result.Status, "factorstatus", result.FactorResult) b.Logger().Debug("unhandled result status", "status", result.Status, "factorstatus", result.FactorResult)
} }
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
} }
@ -215,7 +215,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
default: default:
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: unhandled result status", "status", result.Status) b.Logger().Debug("unhandled result status", "status", result.Status)
} }
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
} }
@ -230,7 +230,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
// Allowed // Allowed
default: default:
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: authentication returned a non-success status", "status", result.Status) b.Logger().Debug("authentication returned a non-success status", "status", result.Status)
} }
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
} }
@ -254,12 +254,12 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
user, err := b.User(ctx, req.Storage, username) user, err := b.User(ctx, req.Storage, username)
if err != nil { if err != nil {
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: error looking up user", "error", err) b.Logger().Debug("error looking up user", "error", err)
} }
} }
if err == nil && user != nil && user.Groups != nil { if err == nil && user != nil && user.Groups != nil {
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups) b.Logger().Debug("adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
} }
allGroups = append(allGroups, user.Groups...) allGroups = append(allGroups, user.Groups...)
} }
@ -270,7 +270,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
entry, _, err := b.Group(ctx, req.Storage, groupName) entry, _, err := b.Group(ctx, req.Storage, groupName)
if err != nil { if err != nil {
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: error looking up group policies", "error", err) b.Logger().Debug("error looking up group policies", "error", err)
} }
} }
if err == nil && entry != nil && entry.Policies != nil { if err == nil && entry != nil && entry.Policies != nil {
@ -309,7 +309,7 @@ func (b *backend) getOktaGroups(client *okta.Client, user *okta.User) ([]string,
oktaGroups = append(oktaGroups, group.Profile.Name) oktaGroups = append(oktaGroups, group.Profile.Name)
} }
if b.Logger().IsDebug() { if b.Logger().IsDebug() {
b.Logger().Debug("auth/okta: Groups fetched from Okta", "num_groups", len(oktaGroups), "groups", fmt.Sprintf("%#v", oktaGroups)) b.Logger().Debug("Groups fetched from Okta", "num_groups", len(oktaGroups), "groups", fmt.Sprintf("%#v", oktaGroups))
} }
return oktaGroups, nil return oktaGroups, nil
} }

View file

@ -7,9 +7,9 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/helper/policyutil" "github.com/hashicorp/vault/helper/policyutil"
log "github.com/mgutz/logxi/v1"
"time" "time"
@ -21,7 +21,7 @@ func TestBackend_Config(t *testing.T) {
defaultLeaseTTLVal := time.Hour * 12 defaultLeaseTTLVal := time.Hour * 12
maxLeaseTTLVal := time.Hour * 24 maxLeaseTTLVal := time.Hour * 24
b, err := Factory(context.Background(), &logical.BackendConfig{ b, err := Factory(context.Background(), &logical.BackendConfig{
Logger: logformat.NewVaultLogger(log.LevelTrace), Logger: logging.NewVaultLogger(log.Trace),
System: &logical.StaticSystemView{ System: &logical.StaticSystemView{
DefaultLeaseTTLVal: defaultLeaseTTLVal, DefaultLeaseTTLVal: defaultLeaseTTLVal,
MaxLeaseTTLVal: maxLeaseTTLVal, MaxLeaseTTLVal: maxLeaseTTLVal,

View file

@ -7,7 +7,7 @@ import (
"strings" "strings"
"sync" "sync"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
uuid "github.com/hashicorp/go-uuid" uuid "github.com/hashicorp/go-uuid"

View file

@ -5,9 +5,9 @@ import (
"errors" "errors"
"sync" "sync"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
log "github.com/mgutz/logxi/v1"
) )
// DatabasePluginClient embeds a databasePluginRPCClient and wraps it's Close // DatabasePluginClient embeds a databasePluginRPCClient and wraps it's Close
@ -61,7 +61,7 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
case *gRPCClient: case *gRPCClient:
db = raw.(*gRPCClient) db = raw.(*gRPCClient)
case *databasePluginRPCClient: case *databasePluginRPCClient:
logger.Warn("database: plugin is using deprecated net RPC transport, recompile plugin to upgrade to gRPC", "plugin", pluginRunner.Name) logger.Warn("plugin is using deprecated net RPC transport, recompile plugin to upgrade to gRPC", "plugin", pluginRunner.Name)
db = raw.(*databasePluginRPCClient) db = raw.(*databasePluginRPCClient)
default: default:
return nil, errors.New("unsupported client type") return nil, errors.New("unsupported client type")

View file

@ -11,7 +11,7 @@ import (
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
metrics "github.com/armon/go-metrics" metrics "github.com/armon/go-metrics"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
) )
// ---- Tracing Middleware Domain ---- // ---- Tracing Middleware Domain ----
@ -21,9 +21,6 @@ import (
type databaseTracingMiddleware struct { type databaseTracingMiddleware struct {
next Database next Database
logger log.Logger logger log.Logger
typeStr string
transport string
} }
func (mw *databaseTracingMiddleware) Type() (string, error) { func (mw *databaseTracingMiddleware) Type() (string, error) {
@ -32,37 +29,37 @@ func (mw *databaseTracingMiddleware) Type() (string, error) {
func (mw *databaseTracingMiddleware) CreateUser(ctx context.Context, statements Statements, usernameConfig UsernameConfig, expiration time.Time) (username string, password string, err error) { func (mw *databaseTracingMiddleware) CreateUser(ctx context.Context, statements Statements, usernameConfig UsernameConfig, expiration time.Time) (username string, password string, err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "CreateUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then)) mw.logger.Trace("create user", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "CreateUser", "status", "started", "type", mw.typeStr, "transport", mw.transport) mw.logger.Trace("create user", "status", "started")
return mw.next.CreateUser(ctx, statements, usernameConfig, expiration) return mw.next.CreateUser(ctx, statements, usernameConfig, expiration)
} }
func (mw *databaseTracingMiddleware) RenewUser(ctx context.Context, statements Statements, username string, expiration time.Time) (err error) { func (mw *databaseTracingMiddleware) RenewUser(ctx context.Context, statements Statements, username string, expiration time.Time) (err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "RenewUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then)) mw.logger.Trace("renew user", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "RenewUser", "status", "started", mw.typeStr, "transport", mw.transport) mw.logger.Trace("renew user", "status", "started")
return mw.next.RenewUser(ctx, statements, username, expiration) return mw.next.RenewUser(ctx, statements, username, expiration)
} }
func (mw *databaseTracingMiddleware) RevokeUser(ctx context.Context, statements Statements, username string) (err error) { func (mw *databaseTracingMiddleware) RevokeUser(ctx context.Context, statements Statements, username string) (err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "RevokeUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then)) mw.logger.Trace("revoke user", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "RevokeUser", "status", "started", "type", mw.typeStr, "transport", mw.transport) mw.logger.Trace("revoke user", "status", "started")
return mw.next.RevokeUser(ctx, statements, username) return mw.next.RevokeUser(ctx, statements, username)
} }
func (mw *databaseTracingMiddleware) RotateRootCredentials(ctx context.Context, statements []string) (conf map[string]interface{}, err error) { func (mw *databaseTracingMiddleware) RotateRootCredentials(ctx context.Context, statements []string) (conf map[string]interface{}, err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "RotateRootCredentials", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then)) mw.logger.Trace("rotate root credentials", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "RotateRootCredentials", "status", "started", "type", mw.typeStr, "transport", mw.transport) mw.logger.Trace("rotate root credentials", "status", "started")
return mw.next.RotateRootCredentials(ctx, statements) return mw.next.RotateRootCredentials(ctx, statements)
} }
@ -73,19 +70,19 @@ func (mw *databaseTracingMiddleware) Initialize(ctx context.Context, conf map[st
func (mw *databaseTracingMiddleware) Init(ctx context.Context, conf map[string]interface{}, verifyConnection bool) (saveConf map[string]interface{}, err error) { func (mw *databaseTracingMiddleware) Init(ctx context.Context, conf map[string]interface{}, verifyConnection bool) (saveConf map[string]interface{}, err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "Initialize", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "verify", verifyConnection, "err", err, "took", time.Since(then)) mw.logger.Trace("initialize", "status", "finished", "verify", verifyConnection, "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "Initialize", "status", "started", "type", mw.typeStr, "transport", mw.transport) mw.logger.Trace("initialize", "status", "started")
return mw.next.Init(ctx, conf, verifyConnection) return mw.next.Init(ctx, conf, verifyConnection)
} }
func (mw *databaseTracingMiddleware) Close() (err error) { func (mw *databaseTracingMiddleware) Close() (err error) {
defer func(then time.Time) { defer func(then time.Time) {
mw.logger.Trace("database", "operation", "Close", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then)) mw.logger.Trace("close", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
mw.logger.Trace("database", "operation", "Close", "status", "started", "type", mw.typeStr, "transport", mw.transport) mw.logger.Trace("close", "status", "started")
return mw.next.Close() return mw.next.Close()
} }

View file

@ -9,9 +9,9 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
log "github.com/mgutz/logxi/v1"
) )
// Database is the interface that all database objects must implement. // Database is the interface that all database objects must implement.
@ -39,6 +39,8 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
return nil, err return nil, err
} }
namedLogger := logger.Named(pluginName)
var transport string var transport string
var db Database var db Database
if pluginRunner.Builtin { if pluginRunner.Builtin {
@ -59,7 +61,7 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
} else { } else {
// create a DatabasePluginClient instance // create a DatabasePluginClient instance
db, err = newPluginClient(ctx, sys, pluginRunner, logger) db, err = newPluginClient(ctx, sys, pluginRunner, namedLogger)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -87,12 +89,10 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
} }
// Wrap with tracing middleware // Wrap with tracing middleware
if logger.IsTrace() { if namedLogger.IsTrace() {
db = &databaseTracingMiddleware{ db = &databaseTracingMiddleware{
transport: transport,
next: db, next: db,
typeStr: typeStr, logger: namedLogger.With("transport", transport),
logger: logger,
} }
} }

View file

@ -7,6 +7,7 @@ import (
"testing" "testing"
"time" "time"
log "github.com/hashicorp/go-hclog"
plugin "github.com/hashicorp/go-plugin" plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/builtin/logical/database/dbplugin" "github.com/hashicorp/vault/builtin/logical/database/dbplugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
@ -14,7 +15,6 @@ import (
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/plugins" "github.com/hashicorp/vault/plugins"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
log "github.com/mgutz/logxi/v1"
) )
type mockPlugin struct { type mockPlugin struct {
@ -147,7 +147,7 @@ func TestPlugin_Init(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{}) dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -171,7 +171,7 @@ func TestPlugin_CreateUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -211,7 +211,7 @@ func TestPlugin_RenewUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -245,7 +245,7 @@ func TestPlugin_RevokeUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -287,7 +287,7 @@ func TestPlugin_NetRPC_Init(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{}) dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -311,7 +311,7 @@ func TestPlugin_NetRPC_CreateUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -351,7 +351,7 @@ func TestPlugin_NetRPC_RenewUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
@ -385,7 +385,7 @@ func TestPlugin_NetRPC_RevokeUser(t *testing.T) {
cluster, sys := getCluster(t) cluster, sys := getCluster(t)
defer cluster.Cleanup() defer cluster.Cleanup()
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{}) db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }

View file

@ -7,7 +7,7 @@ import (
"strings" "strings"
"sync" "sync"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/framework" "github.com/hashicorp/vault/logical/framework"
@ -64,8 +64,8 @@ type backend struct {
// DB returns the database connection. // DB returns the database connection.
func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) { func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) {
b.logger.Trace("postgres/db: enter") b.logger.Debug("postgres/db: enter")
defer b.logger.Trace("postgres/db: exit") defer b.logger.Debug("postgres/db: exit")
b.lock.Lock() b.lock.Lock()
defer b.lock.Unlock() defer b.lock.Unlock()
@ -126,8 +126,8 @@ func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) {
// ResetDB forces a connection next time DB() is called. // ResetDB forces a connection next time DB() is called.
func (b *backend) ResetDB(_ context.Context) { func (b *backend) ResetDB(_ context.Context) {
b.logger.Trace("postgres/resetdb: enter") b.logger.Debug("postgres/db: enter")
defer b.logger.Trace("postgres/resetdb: exit") defer b.logger.Debug("postgres/db: exit")
b.lock.Lock() b.lock.Lock()
defer b.lock.Unlock() defer b.lock.Unlock()

View file

@ -33,13 +33,9 @@ func pathRoleCreate(b *backend) *framework.Path {
} }
func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) { func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
b.logger.Trace("postgres/pathRoleCreateRead: enter")
defer b.logger.Trace("postgres/pathRoleCreateRead: exit")
name := data.Get("name").(string) name := data.Get("name").(string)
// Get the role // Get the role
b.logger.Trace("postgres/pathRoleCreateRead: getting role")
role, err := b.Role(ctx, req.Storage, name) role, err := b.Role(ctx, req.Storage, name)
if err != nil { if err != nil {
return nil, err return nil, err
@ -49,7 +45,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
} }
// Determine if we have a lease // Determine if we have a lease
b.logger.Trace("postgres/pathRoleCreateRead: getting lease")
lease, err := b.Lease(ctx, req.Storage) lease, err := b.Lease(ctx, req.Storage)
if err != nil { if err != nil {
return nil, err return nil, err
@ -90,20 +85,17 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
Format("2006-01-02 15:04:05-0700") Format("2006-01-02 15:04:05-0700")
// Get our handle // Get our handle
b.logger.Trace("postgres/pathRoleCreateRead: getting database handle")
db, err := b.DB(ctx, req.Storage) db, err := b.DB(ctx, req.Storage)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Start a transaction // Start a transaction
b.logger.Trace("postgres/pathRoleCreateRead: starting transaction")
tx, err := db.Begin() tx, err := db.Begin()
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer func() { defer func() {
b.logger.Trace("postgres/pathRoleCreateRead: rolling back transaction")
tx.Rollback() tx.Rollback()
}() }()
@ -114,7 +106,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
continue continue
} }
b.logger.Trace("postgres/pathRoleCreateRead: preparing statement")
stmt, err := tx.Prepare(Query(query, map[string]string{ stmt, err := tx.Prepare(Query(query, map[string]string{
"name": username, "name": username,
"password": password, "password": password,
@ -124,7 +115,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
return nil, err return nil, err
} }
defer stmt.Close() defer stmt.Close()
b.logger.Trace("postgres/pathRoleCreateRead: executing statement")
if _, err := stmt.Exec(); err != nil { if _, err := stmt.Exec(); err != nil {
return nil, err return nil, err
} }
@ -132,14 +122,12 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
// Commit the transaction // Commit the transaction
b.logger.Trace("postgres/pathRoleCreateRead: committing transaction")
if err := tx.Commit(); err != nil { if err := tx.Commit(); err != nil {
return nil, err return nil, err
} }
// Return the secret // Return the secret
b.logger.Trace("postgres/pathRoleCreateRead: generating secret")
resp := b.Secret(SecretCredsType).Response(map[string]interface{}{ resp := b.Secret(SecretCredsType).Response(map[string]interface{}{
"username": username, "username": username,
"password": password, "password": password,

View file

@ -11,7 +11,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/agent" "golang.org/x/crypto/ssh/agent"

View file

@ -571,14 +571,14 @@ func (b *backend) pathRoleList(ctx context.Context, req *logical.Request, d *fra
if err != nil { if err != nil {
// On error, log warning and continue // On error, log warning and continue
if b.Logger().IsWarn() { if b.Logger().IsWarn() {
b.Logger().Warn("ssh: error getting role info", "role", entry, "error", err) b.Logger().Warn("error getting role info", "role", entry, "error", err)
} }
continue continue
} }
if role == nil { if role == nil {
// On empty role, log warning and continue // On empty role, log warning and continue
if b.Logger().IsWarn() { if b.Logger().IsWarn() {
b.Logger().Warn("ssh: no role info found", "role", entry) b.Logger().Warn("no role info found", "role", entry)
} }
continue continue
} }
@ -586,7 +586,7 @@ func (b *backend) pathRoleList(ctx context.Context, req *logical.Request, d *fra
roleInfo, err := b.parseRole(role) roleInfo, err := b.parseRole(role)
if err != nil { if err != nil {
if b.Logger().IsWarn() { if b.Logger().IsWarn() {
b.Logger().Warn("ssh: error parsing role info", "role", entry, "error", err) b.Logger().Warn("error parsing role info", "role", entry, "error", err)
} }
continue continue
} }

View file

@ -15,7 +15,7 @@ import (
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
) )

View file

@ -64,8 +64,8 @@ type backend struct {
} }
func (b *backend) invalidate(_ context.Context, key string) { func (b *backend) invalidate(_ context.Context, key string) {
if b.Logger().IsTrace() { if b.Logger().IsDebug() {
b.Logger().Trace("transit: invalidating key", "key", key) b.Logger().Debug("invalidating key", "key", key)
} }
switch { switch {
case strings.HasPrefix(key, "policy/"): case strings.HasPrefix(key, "policy/"):

View file

@ -86,7 +86,7 @@ type backend struct {
} }
func (b *backend) reloadBackend(ctx context.Context) error { func (b *backend) reloadBackend(ctx context.Context) error {
b.Logger().Trace("plugin: reloading plugin backend", "plugin", b.config.Config["plugin_name"]) b.Logger().Debug("reloading plugin backend", "plugin", b.config.Config["plugin_name"])
return b.startBackend(ctx) return b.startBackend(ctx)
} }
@ -111,12 +111,12 @@ func (b *backend) startBackend(ctx context.Context) error {
if !b.loaded { if !b.loaded {
if b.Backend.Type() != nb.Type() { if b.Backend.Type() != nb.Type() {
nb.Cleanup(ctx) nb.Cleanup(ctx)
b.Logger().Warn("plugin: failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchType) b.Logger().Warn("failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchType)
return ErrMismatchType return ErrMismatchType
} }
if !reflect.DeepEqual(b.Backend.SpecialPaths(), nb.SpecialPaths()) { if !reflect.DeepEqual(b.Backend.SpecialPaths(), nb.SpecialPaths()) {
nb.Cleanup(ctx) nb.Cleanup(ctx)
b.Logger().Warn("plugin: failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchPaths) b.Logger().Warn("failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchPaths)
return ErrMismatchPaths return ErrMismatchPaths
} }
} }

View file

@ -6,14 +6,14 @@ import (
"os" "os"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin" "github.com/hashicorp/vault/logical/plugin"
"github.com/hashicorp/vault/logical/plugin/mock" "github.com/hashicorp/vault/logical/plugin/mock"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
log "github.com/mgutz/logxi/v1"
) )
func TestBackend_impl(t *testing.T) { func TestBackend_impl(t *testing.T) {
@ -80,7 +80,7 @@ func testConfig(t *testing.T) (*logical.BackendConfig, func()) {
sys := vault.TestDynamicSystemView(core.Core) sys := vault.TestDynamicSystemView(core.Core)
config := &logical.BackendConfig{ config := &logical.BackendConfig{
Logger: logformat.NewVaultLogger(log.LevelTrace), Logger: logging.NewVaultLogger(log.Debug),
System: sys, System: sys,
Config: map[string]string{ Config: map[string]string{
"plugin_name": "mock-plugin", "plugin_name": "mock-plugin",

View file

@ -4,12 +4,12 @@ import (
"sync" "sync"
"testing" "testing"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
credAppRole "github.com/hashicorp/vault/builtin/credential/approle" credAppRole "github.com/hashicorp/vault/builtin/credential/approle"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
logxi "github.com/mgutz/logxi/v1"
) )
func TestAppRole_Integ_ConcurrentLogins(t *testing.T) { func TestAppRole_Integ_ConcurrentLogins(t *testing.T) {
@ -17,7 +17,7 @@ func TestAppRole_Integ_ConcurrentLogins(t *testing.T) {
coreConfig := &vault.CoreConfig{ coreConfig := &vault.CoreConfig{
DisableMlock: true, DisableMlock: true,
DisableCache: true, DisableCache: true,
Logger: logxi.NullLog, Logger: log.NewNullLogger(),
CredentialBackends: map[string]logical.Factory{ CredentialBackends: map[string]logical.Factory{
"approle": credAppRole.Factory, "approle": credAppRole.Factory,
}, },

View file

@ -9,6 +9,7 @@ import (
"testing" "testing"
"time" "time"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
"github.com/hashicorp/vault/audit" "github.com/hashicorp/vault/audit"
"github.com/hashicorp/vault/builtin/logical/pki" "github.com/hashicorp/vault/builtin/logical/pki"
@ -22,11 +23,10 @@ import (
auditFile "github.com/hashicorp/vault/builtin/audit/file" auditFile "github.com/hashicorp/vault/builtin/audit/file"
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass" credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
logxi "github.com/mgutz/logxi/v1"
) )
var ( var (
defaultVaultLogger = logxi.NullLog defaultVaultLogger = log.NewNullLogger()
defaultVaultCredentialBackends = map[string]logical.Factory{ defaultVaultCredentialBackends = map[string]logical.Factory{
"userpass": credUserpass.Factory, "userpass": credUserpass.Factory,

View file

@ -3,12 +3,12 @@ package command
import ( import (
"testing" "testing"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
"github.com/hashicorp/vault/builtin/credential/ldap" "github.com/hashicorp/vault/builtin/credential/ldap"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
logxi "github.com/mgutz/logxi/v1"
) )
func TestIdentityStore_Integ_GroupAliases(t *testing.T) { func TestIdentityStore_Integ_GroupAliases(t *testing.T) {
@ -16,7 +16,7 @@ func TestIdentityStore_Integ_GroupAliases(t *testing.T) {
coreConfig := &vault.CoreConfig{ coreConfig := &vault.CoreConfig{
DisableMlock: true, DisableMlock: true,
DisableCache: true, DisableCache: true,
Logger: logxi.NullLog, Logger: log.NewNullLogger(),
CredentialBackends: map[string]logical.Factory{ CredentialBackends: map[string]logical.Factory{
"ldap": ldap.Factory, "ldap": ldap.Factory,
}, },

View file

@ -3,11 +3,11 @@ package command
import ( import (
"testing" "testing"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
vaulthttp "github.com/hashicorp/vault/http" vaulthttp "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
logxi "github.com/mgutz/logxi/v1"
credAppId "github.com/hashicorp/vault/builtin/credential/app-id" credAppId "github.com/hashicorp/vault/builtin/credential/app-id"
) )
@ -17,7 +17,7 @@ func TestPathMap_Upgrade_API(t *testing.T) {
coreConfig := &vault.CoreConfig{ coreConfig := &vault.CoreConfig{
DisableMlock: true, DisableMlock: true,
DisableCache: true, DisableCache: true,
Logger: logxi.NullLog, Logger: log.NewNullLogger(),
CredentialBackends: map[string]logical.Factory{ CredentialBackends: map[string]logical.Factory{
"app-id": credAppId.Factory, "app-id": credAppId.Factory,
}, },

View file

@ -21,7 +21,6 @@ import (
"time" "time"
colorable "github.com/mattn/go-colorable" colorable "github.com/mattn/go-colorable"
log "github.com/mgutz/logxi/v1"
"github.com/mitchellh/cli" "github.com/mitchellh/cli"
testing "github.com/mitchellh/go-testing-interface" testing "github.com/mitchellh/go-testing-interface"
"github.com/posener/complete" "github.com/posener/complete"
@ -32,13 +31,12 @@ import (
"github.com/armon/go-metrics/circonus" "github.com/armon/go-metrics/circonus"
"github.com/armon/go-metrics/datadog" "github.com/armon/go-metrics/datadog"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
hclog "github.com/hashicorp/go-hclog" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/hashicorp/vault/audit" "github.com/hashicorp/vault/audit"
"github.com/hashicorp/vault/command/server" "github.com/hashicorp/vault/command/server"
"github.com/hashicorp/vault/helper/gated-writer" "github.com/hashicorp/vault/helper/gated-writer"
"github.com/hashicorp/vault/helper/logbridge" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/helper/logformat"
"github.com/hashicorp/vault/helper/mlock" "github.com/hashicorp/vault/helper/mlock"
"github.com/hashicorp/vault/helper/parseutil" "github.com/hashicorp/vault/helper/parseutil"
"github.com/hashicorp/vault/helper/reload" "github.com/hashicorp/vault/helper/reload"
@ -288,21 +286,19 @@ func (c *ServerCommand) Run(args []string) int {
// Create a logger. We wrap it in a gated writer so that it doesn't // Create a logger. We wrap it in a gated writer so that it doesn't
// start logging too early. // start logging too early.
c.logGate = &gatedwriter.Writer{Writer: colorable.NewColorable(os.Stderr)} c.logGate = &gatedwriter.Writer{Writer: colorable.NewColorable(os.Stderr)}
var level int var level log.Level
c.flagLogLevel = strings.ToLower(strings.TrimSpace(c.flagLogLevel)) c.flagLogLevel = strings.ToLower(strings.TrimSpace(c.flagLogLevel))
switch c.flagLogLevel { switch c.flagLogLevel {
case "trace": case "trace":
level = log.LevelTrace level = log.Trace
case "debug": case "debug":
level = log.LevelDebug level = log.Debug
case "info", "": case "notice", "info", "":
level = log.LevelInfo level = log.Info
case "notice":
level = log.LevelNotice
case "warn", "warning": case "warn", "warning":
level = log.LevelWarn level = log.Warn
case "err", "error": case "err", "error":
level = log.LevelError level = log.Error
default: default:
c.UI.Error(fmt.Sprintf("Unknown log level: %s", c.flagLogLevel)) c.UI.Error(fmt.Sprintf("Unknown log level: %s", c.flagLogLevel))
return 1 return 1
@ -315,20 +311,20 @@ func (c *ServerCommand) Run(args []string) int {
switch strings.ToLower(logFormat) { switch strings.ToLower(logFormat) {
case "vault", "vault_json", "vault-json", "vaultjson", "json", "": case "vault", "vault_json", "vault-json", "vaultjson", "json", "":
if c.flagDevThreeNode || c.flagDevFourCluster { if c.flagDevThreeNode || c.flagDevFourCluster {
c.logger = logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{ c.logger = log.New(&log.LoggerOptions{
Mutex: &sync.Mutex{}, Mutex: &sync.Mutex{},
Output: c.logGate, Output: c.logGate,
Level: hclog.Trace, Level: log.Trace,
})).LogxiLogger() })
} else { } else {
c.logger = logformat.NewVaultLoggerWithWriter(c.logGate, level) c.logger = logging.NewVaultLoggerWithWriter(c.logGate, level)
} }
default: default:
c.logger = log.NewLogger(c.logGate, "vault") c.logger = logging.NewVaultLoggerWithWriter(c.logGate, level)
c.logger.SetLevel(level)
} }
grpclog.SetLogger(&grpclogFaker{ grpclog.SetLogger(&grpclogFaker{
logger: c.logger, logger: c.logger.Named("grpclogfaker"),
log: os.Getenv("VAULT_GRPC_LOGGING") != "", log: os.Getenv("VAULT_GRPC_LOGGING") != "",
}) })
@ -412,7 +408,7 @@ func (c *ServerCommand) Run(args []string) int {
c.UI.Error(fmt.Sprintf("Unknown storage type %s", config.Storage.Type)) c.UI.Error(fmt.Sprintf("Unknown storage type %s", config.Storage.Type))
return 1 return 1
} }
backend, err := factory(config.Storage.Config, c.logger) backend, err := factory(config.Storage.Config, c.logger.ResetNamed("storage."+config.Storage.Type))
if err != nil { if err != nil {
c.UI.Error(fmt.Sprintf("Error initializing storage of type %s: %s", config.Storage.Type, err)) c.UI.Error(fmt.Sprintf("Error initializing storage of type %s: %s", config.Storage.Type, err))
return 1 return 1
@ -718,8 +714,8 @@ CLUSTER_SYNTHESIS_COMPLETE:
} }
c.reloadFuncsLock.Unlock() c.reloadFuncsLock.Unlock()
if !disableClustering { if !disableClustering {
if c.logger.IsTrace() { if c.logger.IsDebug() {
c.logger.Trace("cluster listener addresses synthesized", "cluster_addresses", clusterAddrs) c.logger.Debug("cluster listener addresses synthesized", "cluster_addresses", clusterAddrs)
} }
} }
@ -1095,7 +1091,7 @@ func (c *ServerCommand) enableThreeNodeDevCluster(base *vault.CoreConfig, info m
testCluster := vault.NewTestCluster(&testing.RuntimeT{}, base, &vault.TestClusterOptions{ testCluster := vault.NewTestCluster(&testing.RuntimeT{}, base, &vault.TestClusterOptions{
HandlerFunc: vaulthttp.Handler, HandlerFunc: vaulthttp.Handler,
BaseListenAddress: c.flagDevListenAddr, BaseListenAddress: c.flagDevListenAddr,
RawLogger: c.logger, Logger: c.logger,
TempDir: tempDir, TempDir: tempDir,
}) })
defer c.cleanupGuard.Do(testCluster.Cleanup) defer c.cleanupGuard.Do(testCluster.Cleanup)
@ -1577,19 +1573,19 @@ func (g *grpclogFaker) Fatalln(args ...interface{}) {
} }
func (g *grpclogFaker) Print(args ...interface{}) { func (g *grpclogFaker) Print(args ...interface{}) {
if g.log && g.logger.IsTrace() { if g.log && g.logger.IsDebug() {
g.logger.Trace(fmt.Sprint(args...)) g.logger.Debug(fmt.Sprint(args...))
} }
} }
func (g *grpclogFaker) Printf(format string, args ...interface{}) { func (g *grpclogFaker) Printf(format string, args ...interface{}) {
if g.log && g.logger.IsTrace() { if g.log && g.logger.IsDebug() {
g.logger.Trace(fmt.Sprintf(format, args...)) g.logger.Debug(fmt.Sprintf(format, args...))
} }
} }
func (g *grpclogFaker) Println(args ...interface{}) { func (g *grpclogFaker) Println(args ...interface{}) {
if g.log && g.logger.IsTrace() { if g.log && g.logger.IsDebug() {
g.logger.Trace(fmt.Sprintln(args...)) g.logger.Debug(fmt.Sprintln(args...))
} }
} }

View file

@ -10,7 +10,7 @@ import (
"strings" "strings"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/hashicorp/hcl" "github.com/hashicorp/hcl"

View file

@ -6,14 +6,14 @@ import (
"testing" "testing"
"time" "time"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/hcl" "github.com/hashicorp/hcl"
"github.com/hashicorp/hcl/hcl/ast" "github.com/hashicorp/hcl/hcl/ast"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
log "github.com/mgutz/logxi/v1"
) )
func TestLoadConfigFile(t *testing.T) { func TestLoadConfigFile(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
config, err := LoadConfigFile("./test-fixtures/config.hcl", logger) config, err := LoadConfigFile("./test-fixtures/config.hcl", logger)
if err != nil { if err != nil {
@ -79,7 +79,7 @@ func TestLoadConfigFile(t *testing.T) {
} }
func TestLoadConfigFile_topLevel(t *testing.T) { func TestLoadConfigFile_topLevel(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
config, err := LoadConfigFile("./test-fixtures/config2.hcl", logger) config, err := LoadConfigFile("./test-fixtures/config2.hcl", logger)
if err != nil { if err != nil {
@ -150,7 +150,7 @@ func TestLoadConfigFile_topLevel(t *testing.T) {
} }
func TestLoadConfigFile_json(t *testing.T) { func TestLoadConfigFile_json(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
config, err := LoadConfigFile("./test-fixtures/config.hcl.json", logger) config, err := LoadConfigFile("./test-fixtures/config.hcl.json", logger)
if err != nil { if err != nil {
@ -215,7 +215,7 @@ func TestLoadConfigFile_json(t *testing.T) {
} }
func TestLoadConfigFile_json2(t *testing.T) { func TestLoadConfigFile_json2(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
config, err := LoadConfigFile("./test-fixtures/config2.hcl.json", logger) config, err := LoadConfigFile("./test-fixtures/config2.hcl.json", logger)
if err != nil { if err != nil {
@ -283,7 +283,7 @@ func TestLoadConfigFile_json2(t *testing.T) {
} }
func TestLoadConfigDir(t *testing.T) { func TestLoadConfigDir(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
config, err := LoadConfigDir("./test-fixtures/config-dir", logger) config, err := LoadConfigDir("./test-fixtures/config-dir", logger)
if err != nil { if err != nil {
@ -383,7 +383,7 @@ listener "tcp" {
} }
func TestParseConfig_badTopLevel(t *testing.T) { func TestParseConfig_badTopLevel(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
_, err := ParseConfig(strings.TrimSpace(` _, err := ParseConfig(strings.TrimSpace(`
backend {} backend {}
@ -405,7 +405,7 @@ nope = "yes"
} }
func TestParseConfig_badListener(t *testing.T) { func TestParseConfig_badListener(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
_, err := ParseConfig(strings.TrimSpace(` _, err := ParseConfig(strings.TrimSpace(`
listener "tcp" { listener "tcp" {
@ -429,7 +429,7 @@ listener "tcp" {
} }
func TestParseConfig_badTelemetry(t *testing.T) { func TestParseConfig_badTelemetry(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
_, err := ParseConfig(strings.TrimSpace(` _, err := ParseConfig(strings.TrimSpace(`
telemetry { telemetry {

View file

@ -1,122 +0,0 @@
package logbridge
import (
"log"
hclog "github.com/hashicorp/go-hclog"
)
type Logger struct {
hclogger hclog.Logger
}
func NewLogger(hclogger hclog.Logger) *Logger {
return &Logger{hclogger: hclogger}
}
func (l *Logger) Trace(msg string, args ...interface{}) {
l.hclogger.Trace(msg, args...)
}
func (l *Logger) Debug(msg string, args ...interface{}) {
l.hclogger.Debug(msg, args...)
}
func (l *Logger) Info(msg string, args ...interface{}) {
l.hclogger.Info(msg, args...)
}
func (l *Logger) Warn(msg string, args ...interface{}) {
l.hclogger.Warn(msg, args...)
}
func (l *Logger) Error(msg string, args ...interface{}) {
l.hclogger.Error(msg, args...)
}
func (l *Logger) IsTrace() bool {
return l.hclogger.IsTrace()
}
func (l *Logger) IsDebug() bool {
return l.hclogger.IsDebug()
}
func (l *Logger) IsInfo() bool {
return l.hclogger.IsInfo()
}
func (l *Logger) IsWarn() bool {
return l.hclogger.IsWarn()
}
func (l *Logger) With(args ...interface{}) *Logger {
return &Logger{
hclogger: l.hclogger.With(args...),
}
}
func (l *Logger) Named(name string) *Logger {
return &Logger{
hclogger: l.hclogger.Named(name),
}
}
func (l *Logger) ResetNamed(name string) *Logger {
return &Logger{
hclogger: l.hclogger.ResetNamed(name),
}
}
func (l *Logger) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
return l.hclogger.StandardLogger(opts)
}
func (l *Logger) LogxiLogger() *LogxiLogger {
return &LogxiLogger{
l: l,
}
}
// This is only for compatibility with whatever the fuck is up with the errors
// coming back from warn/error in Logxi's API. Don't use this directly.
type LogxiLogger struct {
l *Logger
}
func (l *LogxiLogger) Trace(msg string, args ...interface{}) {
l.l.Trace(msg, args...)
}
func (l *LogxiLogger) Debug(msg string, args ...interface{}) {
l.l.Debug(msg, args...)
}
func (l *LogxiLogger) Info(msg string, args ...interface{}) {
l.l.Info(msg, args...)
}
func (l *LogxiLogger) Warn(msg string, args ...interface{}) error {
l.l.Warn(msg, args...)
return nil
}
func (l *LogxiLogger) Error(msg string, args ...interface{}) error {
l.l.Error(msg, args...)
return nil
}
func (l *LogxiLogger) Fatal(msg string, args ...interface{}) {
panic(msg)
}
func (l *LogxiLogger) Log(level int, msg string, args []interface{}) {
panic(msg)
}
func (l *LogxiLogger) IsTrace() bool {
return l.l.IsTrace()
}
func (l *LogxiLogger) IsDebug() bool {
return l.l.IsDebug()
}
func (l *LogxiLogger) IsInfo() bool {
return l.l.IsInfo()
}
func (l *LogxiLogger) IsWarn() bool {
return l.l.IsWarn()
}
func (l *LogxiLogger) SetLevel(level int) {
panic("set level")
}
func (l *LogxiLogger) With(args ...interface{}) *LogxiLogger {
return l.l.With(args...).LogxiLogger()
}
func (l *LogxiLogger) Named(name string) *LogxiLogger {
return l.l.Named(name).LogxiLogger()
}
func (l *LogxiLogger) ResetNamed(name string) *LogxiLogger {
return l.l.ResetNamed(name).LogxiLogger()
}
func (l *LogxiLogger) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
return l.l.StandardLogger(opts)
}

View file

@ -1,175 +0,0 @@
package logformat
import (
"encoding/json"
"fmt"
"io"
"os"
"strings"
"sync"
"time"
log "github.com/mgutz/logxi/v1"
)
const (
styledefault = iota
stylejson
)
// NewVaultLogger creates a new logger with the specified level and a Vault
// formatter
func NewVaultLogger(level int) log.Logger {
logger := log.New("vault")
return setLevelFormatter(logger, level, createVaultFormatter())
}
// NewVaultLoggerWithWriter creates a new logger with the specified level and
// writer and a Vault formatter
func NewVaultLoggerWithWriter(w io.Writer, level int) log.Logger {
logger := log.NewLogger(w, "vault")
return setLevelFormatter(logger, level, createVaultFormatter())
}
// Sets the level and formatter on the log, which must be a DefaultLogger
func setLevelFormatter(logger log.Logger, level int, formatter log.Formatter) log.Logger {
logger.(*log.DefaultLogger).SetLevel(level)
logger.(*log.DefaultLogger).SetFormatter(formatter)
return logger
}
// Creates a formatter, checking env vars for the style
func createVaultFormatter() log.Formatter {
ret := &vaultFormatter{
Mutex: &sync.Mutex{},
}
logFormat := os.Getenv("VAULT_LOG_FORMAT")
if logFormat == "" {
logFormat = os.Getenv("LOGXI_FORMAT")
}
switch strings.ToLower(logFormat) {
case "json", "vault_json", "vault-json", "vaultjson":
ret.style = stylejson
default:
ret.style = styledefault
}
return ret
}
// Thread safe formatter
type vaultFormatter struct {
*sync.Mutex
style int
module string
}
func (v *vaultFormatter) Format(writer io.Writer, level int, msg string, args []interface{}) {
currTime := time.Now()
v.Lock()
defer v.Unlock()
switch v.style {
case stylejson:
v.formatJSON(writer, currTime, level, msg, args)
default:
v.formatDefault(writer, currTime, level, msg, args)
}
}
func (v *vaultFormatter) formatDefault(writer io.Writer, currTime time.Time, level int, msg string, args []interface{}) {
// Write a trailing newline
defer writer.Write([]byte("\n"))
writer.Write([]byte(currTime.Local().Format("2006/01/02 15:04:05.000000")))
switch level {
case log.LevelCritical:
writer.Write([]byte(" [CRIT ] "))
case log.LevelError:
writer.Write([]byte(" [ERROR] "))
case log.LevelWarn:
writer.Write([]byte(" [WARN ] "))
case log.LevelInfo:
writer.Write([]byte(" [INFO ] "))
case log.LevelDebug:
writer.Write([]byte(" [DEBUG] "))
case log.LevelTrace:
writer.Write([]byte(" [TRACE] "))
default:
writer.Write([]byte(" [ALL ] "))
}
if v.module != "" {
writer.Write([]byte(fmt.Sprintf("(%s) ", v.module)))
}
writer.Write([]byte(msg))
if args != nil && len(args) > 0 {
if len(args)%2 != 0 {
args = append(args, "[unknown!]")
}
writer.Write([]byte(":"))
for i := 0; i < len(args); i = i + 2 {
var quote string
switch args[i+1].(type) {
case string:
if strings.ContainsRune(args[i+1].(string), ' ') {
quote = `"`
}
}
writer.Write([]byte(fmt.Sprintf(" %s=%s%v%s", args[i], quote, args[i+1], quote)))
}
}
}
func (v *vaultFormatter) formatJSON(writer io.Writer, currTime time.Time, level int, msg string, args []interface{}) {
vals := map[string]interface{}{
"@message": msg,
"@timestamp": currTime.Format("2006-01-02T15:04:05.000000Z07:00"),
}
var levelStr string
switch level {
case log.LevelCritical:
levelStr = "critical"
case log.LevelError:
levelStr = "error"
case log.LevelWarn:
levelStr = "warn"
case log.LevelInfo:
levelStr = "info"
case log.LevelDebug:
levelStr = "debug"
case log.LevelTrace:
levelStr = "trace"
default:
levelStr = "all"
}
vals["@level"] = levelStr
if v.module != "" {
vals["@module"] = v.module
}
if args != nil && len(args) > 0 {
if len(args)%2 != 0 {
args = append(args, "[unknown!]")
}
for i := 0; i < len(args); i = i + 2 {
if _, ok := args[i].(string); !ok {
// As this is the logging function not much we can do here
// without injecting into logs...
continue
}
vals[args[i].(string)] = args[i+1]
}
}
enc := json.NewEncoder(writer)
enc.Encode(vals)
}

39
helper/logging/vault.go Normal file
View file

@ -0,0 +1,39 @@
package logging
import (
"io"
"os"
"strings"
log "github.com/hashicorp/go-hclog"
)
// NewVaultLogger creates a new logger with the specified level and a Vault
// formatter
func NewVaultLogger(level log.Level) log.Logger {
return NewVaultLoggerWithWriter(log.DefaultOutput, level)
}
// NewVaultLoggerWithWriter creates a new logger with the specified level and
// writer and a Vault formatter
func NewVaultLoggerWithWriter(w io.Writer, level log.Level) log.Logger {
opts := &log.LoggerOptions{
Level: level,
Output: w,
JSONFormat: useJson(),
}
return log.New(opts)
}
func useJson() bool {
logFormat := os.Getenv("VAULT_LOG_FORMAT")
if logFormat == "" {
logFormat = os.Getenv("LOGXI_FORMAT")
}
switch strings.ToLower(logFormat) {
case "json", "vault_json", "vault-json", "vaultjson":
return true
default:
return false
}
}

View file

@ -1,158 +0,0 @@
package pluginutil
import (
"bytes"
"fmt"
stdlog "log"
"strings"
hclog "github.com/hashicorp/go-hclog"
log "github.com/mgutz/logxi/v1"
)
// pluginLogFaker is a wrapper on logxi.Logger that
// implements hclog.Logger
type hclogFaker struct {
logger log.Logger
name string
implied []interface{}
}
func (f *hclogFaker) buildLog(msg string, args ...interface{}) (string, []interface{}) {
if f.name != "" {
msg = fmt.Sprintf("%s: %s", f.name, msg)
}
args = append(f.implied, args...)
return msg, args
}
func (f *hclogFaker) Trace(msg string, args ...interface{}) {
msg, args = f.buildLog(msg, args...)
f.logger.Trace(msg, args...)
}
func (f *hclogFaker) Debug(msg string, args ...interface{}) {
msg, args = f.buildLog(msg, args...)
f.logger.Debug(msg, args...)
}
func (f *hclogFaker) Info(msg string, args ...interface{}) {
msg, args = f.buildLog(msg, args...)
f.logger.Info(msg, args...)
}
func (f *hclogFaker) Warn(msg string, args ...interface{}) {
msg, args = f.buildLog(msg, args...)
f.logger.Warn(msg, args...)
}
func (f *hclogFaker) Error(msg string, args ...interface{}) {
msg, args = f.buildLog(msg, args...)
f.logger.Error(msg, args...)
}
func (f *hclogFaker) IsTrace() bool {
return f.logger.IsTrace()
}
func (f *hclogFaker) IsDebug() bool {
return f.logger.IsDebug()
}
func (f *hclogFaker) IsInfo() bool {
return f.logger.IsInfo()
}
func (f *hclogFaker) IsWarn() bool {
return f.logger.IsWarn()
}
func (f *hclogFaker) IsError() bool {
return !f.logger.IsTrace() && !f.logger.IsDebug() && !f.logger.IsInfo() && !f.IsWarn()
}
func (f *hclogFaker) With(args ...interface{}) hclog.Logger {
var nf = *f
nf.implied = append(nf.implied, args...)
return f
}
func (f *hclogFaker) Named(name string) hclog.Logger {
var nf = *f
if nf.name != "" {
nf.name = nf.name + "." + name
}
return &nf
}
func (f *hclogFaker) ResetNamed(name string) hclog.Logger {
var nf = *f
nf.name = name
return &nf
}
func (f *hclogFaker) StandardLogger(opts *hclog.StandardLoggerOptions) *stdlog.Logger {
if opts == nil {
opts = &hclog.StandardLoggerOptions{}
}
return stdlog.New(&stdlogAdapter{f, opts.InferLevels}, "", 0)
}
// Provides a io.Writer to shim the data out of *log.Logger
// and back into our Logger. This is basically the only way to
// build upon *log.Logger.
type stdlogAdapter struct {
hl hclog.Logger
inferLevels bool
}
// Take the data, infer the levels if configured, and send it through
// a regular Logger
func (s *stdlogAdapter) Write(data []byte) (int, error) {
str := string(bytes.TrimRight(data, " \t\n"))
if s.inferLevels {
level, str := s.pickLevel(str)
switch level {
case hclog.Trace:
s.hl.Trace(str)
case hclog.Debug:
s.hl.Debug(str)
case hclog.Info:
s.hl.Info(str)
case hclog.Warn:
s.hl.Warn(str)
case hclog.Error:
s.hl.Error(str)
default:
s.hl.Info(str)
}
} else {
s.hl.Info(str)
}
return len(data), nil
}
// Detect, based on conventions, what log level this is
func (s *stdlogAdapter) pickLevel(str string) (hclog.Level, string) {
switch {
case strings.HasPrefix(str, "[DEBUG]"):
return hclog.Debug, strings.TrimSpace(str[7:])
case strings.HasPrefix(str, "[TRACE]"):
return hclog.Trace, strings.TrimSpace(str[7:])
case strings.HasPrefix(str, "[INFO]"):
return hclog.Info, strings.TrimSpace(str[6:])
case strings.HasPrefix(str, "[WARN]"):
return hclog.Warn, strings.TrimSpace(str[7:])
case strings.HasPrefix(str, "[ERROR]"):
return hclog.Error, strings.TrimSpace(str[7:])
case strings.HasPrefix(str, "[ERR]"):
return hclog.Error, strings.TrimSpace(str[5:])
default:
return hclog.Info, str
}
}

View file

@ -9,11 +9,11 @@ import (
"os/exec" "os/exec"
"time" "time"
log "github.com/hashicorp/go-hclog"
plugin "github.com/hashicorp/go-plugin" plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
"github.com/hashicorp/vault/helper/wrapping" "github.com/hashicorp/vault/helper/wrapping"
"github.com/hashicorp/vault/version" "github.com/hashicorp/vault/version"
log "github.com/mgutz/logxi/v1"
) )
// Looker defines the plugin Lookup function that looks into the plugin catalog // Looker defines the plugin Lookup function that looks into the plugin catalog
@ -73,12 +73,6 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
} }
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginVaultVersionEnv, version.GetVersion().Version)) cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginVaultVersionEnv, version.GetVersion().Version))
// Create logger for the plugin client
clogger := &hclogFaker{
logger: logger,
}
namedLogger := clogger.ResetNamed("plugin")
var clientTLSConfig *tls.Config var clientTLSConfig *tls.Config
if !isMetadataMode { if !isMetadataMode {
// Add the metadata mode ENV and set it to false // Add the metadata mode ENV and set it to false
@ -106,7 +100,7 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
// Add the response wrap token to the ENV of the plugin // Add the response wrap token to the ENV of the plugin
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginUnwrapTokenEnv, wrapToken)) cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginUnwrapTokenEnv, wrapToken))
} else { } else {
namedLogger = clogger.ResetNamed("plugin.metadata") logger = logger.With("metadata", "true")
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginMetadataModeEnv, "true")) cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginMetadataModeEnv, "true"))
} }
@ -121,7 +115,7 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
Cmd: cmd, Cmd: cmd,
SecureConfig: secureConfig, SecureConfig: secureConfig,
TLSConfig: clientTLSConfig, TLSConfig: clientTLSConfig,
Logger: namedLogger, Logger: logger,
AllowedProtocols: []plugin.Protocol{ AllowedProtocols: []plugin.Protocol{
plugin.ProtocolNetRPC, plugin.ProtocolNetRPC,
plugin.ProtocolGRPC, plugin.ProtocolGRPC,

View file

@ -10,10 +10,10 @@ import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/compressutil" "github.com/hashicorp/vault/helper/compressutil"
"github.com/hashicorp/vault/helper/locksutil" "github.com/hashicorp/vault/helper/locksutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1"
) )
const ( const (
@ -347,7 +347,7 @@ func NewStoragePacker(view logical.Storage, logger log.Logger, viewPrefix string
packer := &StoragePacker{ packer := &StoragePacker{
view: view, view: view,
viewPrefix: viewPrefix, viewPrefix: viewPrefix,
logger: logger, logger: logger.Named("storagepacker"),
storageLocks: locksutil.CreateLocks(), storageLocks: locksutil.CreateLocks(),
} }

View file

@ -5,14 +5,14 @@ import (
"testing" "testing"
"github.com/golang/protobuf/ptypes" "github.com/golang/protobuf/ptypes"
log "github.com/hashicorp/go-hclog"
uuid "github.com/hashicorp/go-uuid" uuid "github.com/hashicorp/go-uuid"
"github.com/hashicorp/vault/helper/identity" "github.com/hashicorp/vault/helper/identity"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1"
) )
func BenchmarkStoragePacker(b *testing.B) { func BenchmarkStoragePacker(b *testing.B) {
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "") storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
if err != nil { if err != nil {
b.Fatal(err) b.Fatal(err)
} }
@ -61,7 +61,7 @@ func BenchmarkStoragePacker(b *testing.B) {
} }
func TestStoragePacker(t *testing.T) { func TestStoragePacker(t *testing.T) {
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "") storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -107,7 +107,7 @@ func TestStoragePacker(t *testing.T) {
} }
func TestStoragePacker_SerializeDeserializeComplexItem(t *testing.T) { func TestStoragePacker_SerializeDeserializeComplexItem(t *testing.T) {
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "") storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -290,7 +290,7 @@ func testHTTP_Forwarding_Stress_Common(t *testing.T, parallel bool, num uint64)
waitCond.L.Unlock() waitCond.L.Unlock()
waitCond.Broadcast() waitCond.Broadcast()
core.Logger().Trace("Starting goroutine", "id", id) core.Logger().Debug("Starting goroutine", "id", id)
startTime := time.Now() startTime := time.Now()
for { for {

View file

@ -167,7 +167,7 @@ func handleRequestForwarding(core *vault.Core, handler http.Handler) http.Handle
if r.Header.Get(NoRequestForwardingHeaderName) != "" { if r.Header.Get(NoRequestForwardingHeaderName) != "" {
// Forwarding explicitly disabled, fall back to previous behavior // Forwarding explicitly disabled, fall back to previous behavior
core.Logger().Trace("http/handleRequestForwarding: forwarding disabled by client request") core.Logger().Debug("handleRequestForwarding: forwarding disabled by client request")
handler.ServeHTTP(w, r) handler.ServeHTTP(w, r)
return return
} }
@ -202,9 +202,9 @@ func handleRequestForwarding(core *vault.Core, handler http.Handler) http.Handle
statusCode, header, retBytes, err := core.ForwardRequest(r) statusCode, header, retBytes, err := core.ForwardRequest(r)
if err != nil { if err != nil {
if err == vault.ErrCannotForward { if err == vault.ErrCannotForward {
core.Logger().Trace("http/handleRequestForwarding: cannot forward (possibly disabled on active node), falling back") core.Logger().Debug("handleRequestForwarding: cannot forward (possibly disabled on active node), falling back")
} else { } else {
core.Logger().Error("http/handleRequestForwarding: error forwarding request", "error", err) core.Logger().Error("handleRequestForwarding: error forwarding request", "error", err)
} }
// Fall back to redirection // Fall back to redirection

View file

@ -13,9 +13,9 @@ import (
"testing" "testing"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
"github.com/hashicorp/vault/physical/inmem" "github.com/hashicorp/vault/physical/inmem"
@ -85,7 +85,7 @@ func TestLogical_StandbyRedirect(t *testing.T) {
defer ln2.Close() defer ln2.Close()
// Create an HA Vault // Create an HA Vault
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inmha, err := inmem.NewInmemHA(nil, logger) inmha, err := inmem.NewInmemHA(nil, logger)
if err != nil { if err != nil {
@ -137,9 +137,9 @@ func TestLogical_StandbyRedirect(t *testing.T) {
resp := testHttpPutDisableRedirect(t, root, addr2+"/v1/secret/foo", map[string]interface{}{ resp := testHttpPutDisableRedirect(t, root, addr2+"/v1/secret/foo", map[string]interface{}{
"data": "bar", "data": "bar",
}) })
logger.Trace("307 test one starting") logger.Debug("307 test one starting")
testResponseStatus(t, resp, 307) testResponseStatus(t, resp, 307)
logger.Trace("307 test one stopping") logger.Debug("307 test one stopping")
//// READ to standby //// READ to standby
resp = testHttpGet(t, root, addr2+"/v1/auth/token/lookup-self") resp = testHttpGet(t, root, addr2+"/v1/auth/token/lookup-self")
@ -181,9 +181,9 @@ func TestLogical_StandbyRedirect(t *testing.T) {
//// DELETE to standby //// DELETE to standby
resp = testHttpDeleteDisableRedirect(t, root, addr2+"/v1/secret/foo") resp = testHttpDeleteDisableRedirect(t, root, addr2+"/v1/secret/foo")
logger.Trace("307 test two starting") logger.Debug("307 test two starting")
testResponseStatus(t, resp, 307) testResponseStatus(t, resp, 307)
logger.Trace("307 test two stopping") logger.Debug("307 test two stopping")
} }
func TestLogical_CreateToken(t *testing.T) { func TestLogical_CreateToken(t *testing.T) {

View file

@ -8,10 +8,9 @@ import (
"sync" "sync"
"testing" "testing"
hclog "github.com/hashicorp/go-hclog" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
bplugin "github.com/hashicorp/vault/builtin/plugin" bplugin "github.com/hashicorp/vault/builtin/plugin"
"github.com/hashicorp/vault/helper/logbridge"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin" "github.com/hashicorp/vault/logical/plugin"
@ -20,8 +19,8 @@ import (
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
) )
func getPluginClusterAndCore(t testing.TB, logger *logbridge.Logger) (*vault.TestCluster, *vault.TestClusterCore) { func getPluginClusterAndCore(t testing.TB, logger log.Logger) (*vault.TestCluster, *vault.TestClusterCore) {
inmha, err := inmem.NewInmemHA(nil, logger.LogxiLogger()) inmha, err := inmem.NewInmemHA(nil, logger)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -35,7 +34,7 @@ func getPluginClusterAndCore(t testing.TB, logger *logbridge.Logger) (*vault.Tes
cluster := vault.NewTestCluster(t, coreConfig, &vault.TestClusterOptions{ cluster := vault.NewTestCluster(t, coreConfig, &vault.TestClusterOptions{
HandlerFunc: Handler, HandlerFunc: Handler,
RawLogger: logger, Logger: logger.Named("testclusteroptions"),
}) })
cluster.Start() cluster.Start()
@ -91,9 +90,9 @@ func TestPlugin_PluginMain(t *testing.T) {
} }
func TestPlugin_MockList(t *testing.T) { func TestPlugin_MockList(t *testing.T) {
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{ logger := log.New(&log.LoggerOptions{
Mutex: &sync.Mutex{}, Mutex: &sync.Mutex{},
})) })
cluster, core := getPluginClusterAndCore(t, logger) cluster, core := getPluginClusterAndCore(t, logger)
defer cluster.Cleanup() defer cluster.Cleanup()
@ -129,9 +128,9 @@ func TestPlugin_MockList(t *testing.T) {
} }
func TestPlugin_MockRawResponse(t *testing.T) { func TestPlugin_MockRawResponse(t *testing.T) {
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{ logger := log.New(&log.LoggerOptions{
Mutex: &sync.Mutex{}, Mutex: &sync.Mutex{},
})) })
cluster, core := getPluginClusterAndCore(t, logger) cluster, core := getPluginClusterAndCore(t, logger)
defer cluster.Cleanup() defer cluster.Cleanup()
@ -155,9 +154,9 @@ func TestPlugin_MockRawResponse(t *testing.T) {
} }
func TestPlugin_GetParams(t *testing.T) { func TestPlugin_GetParams(t *testing.T) {
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{ logger := log.New(&log.LoggerOptions{
Mutex: &sync.Mutex{}, Mutex: &sync.Mutex{},
})) })
cluster, core := getPluginClusterAndCore(t, logger) cluster, core := getPluginClusterAndCore(t, logger)
defer cluster.Cleanup() defer cluster.Cleanup()

View file

@ -11,11 +11,11 @@ import (
"sync" "sync"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/hashicorp/vault/helper/errutil" "github.com/hashicorp/vault/helper/errutil"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/helper/parseutil" "github.com/hashicorp/vault/helper/parseutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
) )
@ -255,7 +255,7 @@ func (b *Backend) Logger() log.Logger {
return b.logger return b.logger
} }
return logformat.NewVaultLoggerWithWriter(ioutil.Discard, log.LevelOff) return logging.NewVaultLoggerWithWriter(ioutil.Discard, log.NoLevel)
} }
// System returns the backend's system view. // System returns the backend's system view.

View file

@ -3,7 +3,7 @@ package logical
import ( import (
"context" "context"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
) )
// BackendType is the type of backend that is being implemented // BackendType is the type of backend that is being implemented

View file

@ -7,9 +7,8 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
hclog "github.com/hashicorp/go-hclog" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/logbridge"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin/pb" "github.com/hashicorp/vault/logical/plugin/pb"
) )
@ -18,12 +17,18 @@ import (
type BackendPlugin struct { type BackendPlugin struct {
Factory logical.Factory Factory logical.Factory
metadataMode bool metadataMode bool
Logger hclog.Logger Logger log.Logger
} }
// Server gets called when on plugin.Serve() // Server gets called when on plugin.Serve()
func (b *BackendPlugin) Server(broker *plugin.MuxBroker) (interface{}, error) { func (b *BackendPlugin) Server(broker *plugin.MuxBroker) (interface{}, error) {
return &backendPluginServer{factory: b.Factory, broker: broker}, nil return &backendPluginServer{
factory: b.Factory,
broker: broker,
// We pass the logger down into the backend so go-plugin will forward
// logs for us.
logger: b.Logger,
}, nil
} }
// Client gets called on plugin.NewClient() // Client gets called on plugin.NewClient()
@ -37,7 +42,7 @@ func (b BackendPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) err
factory: b.Factory, factory: b.Factory,
// We pass the logger down into the backend so go-plugin will forward // We pass the logger down into the backend so go-plugin will forward
// logs for us. // logs for us.
logger: logbridge.NewLogger(b.Logger).LogxiLogger(), logger: b.Logger,
}) })
return nil return nil
} }

View file

@ -5,9 +5,9 @@ import (
"errors" "errors"
"net/rpc" "net/rpc"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1"
) )
var ( var (
@ -204,16 +204,6 @@ func (b *backendPluginClient) Setup(ctx context.Context, config *logical.Backend
impl: storageImpl, impl: storageImpl,
}) })
// Shim log.Logger
loggerImpl := config.Logger
if b.metadataMode {
loggerImpl = log.NullLog
}
loggerID := b.broker.NextId()
go b.broker.AcceptAndServe(loggerID, &LoggerServer{
logger: loggerImpl,
})
// Shim logical.SystemView // Shim logical.SystemView
sysViewImpl := config.System sysViewImpl := config.System
if b.metadataMode { if b.metadataMode {
@ -226,7 +216,6 @@ func (b *backendPluginClient) Setup(ctx context.Context, config *logical.Backend
args := &SetupArgs{ args := &SetupArgs{
StorageID: storageID, StorageID: storageID,
LoggerID: loggerID,
SysViewID: sysViewID, SysViewID: sysViewID,
Config: config.Config, Config: config.Config,
BackendUUID: config.BackendUUID, BackendUUID: config.BackendUUID,

View file

@ -6,6 +6,8 @@ import (
"net/rpc" "net/rpc"
"os" "os"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
@ -22,7 +24,7 @@ type backendPluginServer struct {
backend logical.Backend backend logical.Backend
factory logical.Factory factory logical.Factory
loggerClient *rpc.Client logger hclog.Logger
sysViewClient *rpc.Client sysViewClient *rpc.Client
storageClient *rpc.Client storageClient *rpc.Client
} }
@ -77,7 +79,6 @@ func (b *backendPluginServer) Cleanup(_ interface{}, _ *struct{}) error {
b.backend.Cleanup(context.Background()) b.backend.Cleanup(context.Background())
// Close rpc clients // Close rpc clients
b.loggerClient.Close()
b.sysViewClient.Close() b.sysViewClient.Close()
b.storageClient.Close() b.storageClient.Close()
return nil return nil
@ -109,19 +110,6 @@ func (b *backendPluginServer) Setup(args *SetupArgs, reply *SetupReply) error {
storage := &StorageClient{client: rawStorageClient} storage := &StorageClient{client: rawStorageClient}
// Dial for logger
loggerConn, err := b.broker.Dial(args.LoggerID)
if err != nil {
*reply = SetupReply{
Error: wrapError(err),
}
return nil
}
rawLoggerClient := rpc.NewClient(loggerConn)
b.loggerClient = rawLoggerClient
logger := &LoggerClient{client: rawLoggerClient}
// Dial for sys view // Dial for sys view
sysViewConn, err := b.broker.Dial(args.SysViewID) sysViewConn, err := b.broker.Dial(args.SysViewID)
if err != nil { if err != nil {
@ -137,7 +125,7 @@ func (b *backendPluginServer) Setup(args *SetupArgs, reply *SetupReply) error {
config := &logical.BackendConfig{ config := &logical.BackendConfig{
StorageView: storage, StorageView: storage,
Logger: logger, Logger: b.logger,
System: sysView, System: sysView,
Config: args.Config, Config: args.Config,
BackendUUID: args.BackendUUID, BackendUUID: args.BackendUUID,

View file

@ -5,11 +5,11 @@ import (
"testing" "testing"
"time" "time"
log "github.com/hashicorp/go-hclog"
gplugin "github.com/hashicorp/go-plugin" gplugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin/mock" "github.com/hashicorp/vault/logical/plugin/mock"
log "github.com/mgutz/logxi/v1"
) )
func TestBackendPlugin_impl(t *testing.T) { func TestBackendPlugin_impl(t *testing.T) {
@ -156,7 +156,7 @@ func testBackend(t *testing.T) (logical.Backend, func()) {
b := raw.(logical.Backend) b := raw.(logical.Backend)
err = b.Setup(context.Background(), &logical.BackendConfig{ err = b.Setup(context.Background(), &logical.BackendConfig{
Logger: logformat.NewVaultLogger(log.LevelTrace), Logger: logging.NewVaultLogger(log.Debug),
System: &logical.StaticSystemView{ System: &logical.StaticSystemView{
DefaultLeaseTTLVal: 300 * time.Second, DefaultLeaseTTLVal: 300 * time.Second,
MaxLeaseTTLVal: 1800 * time.Second, MaxLeaseTTLVal: 1800 * time.Second,

View file

@ -7,11 +7,11 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin/pb" "github.com/hashicorp/vault/logical/plugin/pb"
log "github.com/mgutz/logxi/v1"
) )
var ErrPluginShutdown = errors.New("plugin is shut down") var ErrPluginShutdown = errors.New("plugin is shut down")

View file

@ -3,10 +3,10 @@ package plugin
import ( import (
"context" "context"
log "github.com/hashicorp/go-hclog"
plugin "github.com/hashicorp/go-plugin" plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin/pb" "github.com/hashicorp/vault/logical/plugin/pb"
log "github.com/mgutz/logxi/v1"
"google.golang.org/grpc" "google.golang.org/grpc"
) )

View file

@ -6,12 +6,11 @@ import (
"testing" "testing"
"time" "time"
hclog "github.com/hashicorp/go-hclog" log "github.com/hashicorp/go-hclog"
gplugin "github.com/hashicorp/go-plugin" gplugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/logical/plugin/mock" "github.com/hashicorp/vault/logical/plugin/mock"
log "github.com/mgutz/logxi/v1"
) )
func TestGRPCBackendPlugin_impl(t *testing.T) { func TestGRPCBackendPlugin_impl(t *testing.T) {
@ -143,8 +142,8 @@ func testGRPCBackend(t *testing.T) (logical.Backend, func()) {
pluginMap := map[string]gplugin.Plugin{ pluginMap := map[string]gplugin.Plugin{
"backend": &BackendPlugin{ "backend": &BackendPlugin{
Factory: mock.Factory, Factory: mock.Factory,
Logger: hclog.New(&hclog.LoggerOptions{ Logger: log.New(&log.LoggerOptions{
Level: hclog.Trace, Level: log.Debug,
Output: os.Stderr, Output: os.Stderr,
JSONFormat: true, JSONFormat: true,
}), }),
@ -163,7 +162,7 @@ func testGRPCBackend(t *testing.T) (logical.Backend, func()) {
b := raw.(logical.Backend) b := raw.(logical.Backend)
err = b.Setup(context.Background(), &logical.BackendConfig{ err = b.Setup(context.Background(), &logical.BackendConfig{
Logger: logformat.NewVaultLogger(log.LevelTrace), Logger: logging.NewVaultLogger(log.Debug),
System: &logical.StaticSystemView{ System: &logical.StaticSystemView{
DefaultLeaseTTLVal: 300 * time.Second, DefaultLeaseTTLVal: 300 * time.Second,
MaxLeaseTTLVal: 1800 * time.Second, MaxLeaseTTLVal: 1800 * time.Second,

View file

@ -1,114 +1,9 @@
package plugin package plugin
import ( import hclog "github.com/hashicorp/go-hclog"
"net/rpc"
log "github.com/mgutz/logxi/v1"
)
type LoggerClient struct {
client *rpc.Client
}
func (l *LoggerClient) Trace(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Trace", cArgs, &struct{}{})
}
func (l *LoggerClient) Debug(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Debug", cArgs, &struct{}{})
}
func (l *LoggerClient) Info(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Info", cArgs, &struct{}{})
}
func (l *LoggerClient) Warn(msg string, args ...interface{}) error {
var reply LoggerReply
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
err := l.client.Call("Plugin.Warn", cArgs, &reply)
if err != nil {
return err
}
if reply.Error != nil {
return reply.Error
}
return nil
}
func (l *LoggerClient) Error(msg string, args ...interface{}) error {
var reply LoggerReply
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
err := l.client.Call("Plugin.Error", cArgs, &reply)
if err != nil {
return err
}
if reply.Error != nil {
return reply.Error
}
return nil
}
func (l *LoggerClient) Fatal(msg string, args ...interface{}) {
// NOOP since it's not actually used within vault
return
}
func (l *LoggerClient) Log(level int, msg string, args []interface{}) {
cArgs := &LoggerArgs{
Level: level,
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Log", cArgs, &struct{}{})
}
func (l *LoggerClient) SetLevel(level int) {
l.client.Call("Plugin.SetLevel", level, &struct{}{})
}
func (l *LoggerClient) IsTrace() bool {
var reply LoggerReply
l.client.Call("Plugin.IsTrace", new(interface{}), &reply)
return reply.IsTrue
}
func (l *LoggerClient) IsDebug() bool {
var reply LoggerReply
l.client.Call("Plugin.IsDebug", new(interface{}), &reply)
return reply.IsTrue
}
func (l *LoggerClient) IsInfo() bool {
var reply LoggerReply
l.client.Call("Plugin.IsInfo", new(interface{}), &reply)
return reply.IsTrue
}
func (l *LoggerClient) IsWarn() bool {
var reply LoggerReply
l.client.Call("Plugin.IsWarn", new(interface{}), &reply)
return reply.IsTrue
}
type LoggerServer struct { type LoggerServer struct {
logger log.Logger logger hclog.Logger
} }
func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error { func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error {
@ -127,34 +22,42 @@ func (l *LoggerServer) Info(args *LoggerArgs, _ *struct{}) error {
} }
func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error { func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error {
err := l.logger.Warn(args.Msg, args.Args...) l.logger.Warn(args.Msg, args.Args...)
if err != nil {
*reply = LoggerReply{
Error: wrapError(err),
}
return nil
}
return nil return nil
} }
func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error { func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error {
err := l.logger.Error(args.Msg, args.Args...) l.logger.Error(args.Msg, args.Args...)
if err != nil {
*reply = LoggerReply{
Error: wrapError(err),
}
return nil
}
return nil return nil
} }
func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error { func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error {
l.logger.Log(args.Level, args.Msg, args.Args)
switch translateLevel(args.Level) {
case hclog.Trace:
l.logger.Trace(args.Msg, args.Args...)
case hclog.Debug:
l.logger.Debug(args.Msg, args.Args...)
case hclog.Info:
l.logger.Info(args.Msg, args.Args...)
case hclog.Warn:
l.logger.Warn(args.Msg, args.Args...)
case hclog.Error:
l.logger.Error(args.Msg, args.Args...)
case hclog.NoLevel:
}
return nil return nil
} }
func (l *LoggerServer) SetLevel(args int, _ *struct{}) error { func (l *LoggerServer) SetLevel(args int, _ *struct{}) error {
l.logger.SetLevel(args) level := translateLevel(args)
l.logger = hclog.New(&hclog.LoggerOptions{Level: level})
return nil return nil
} }
@ -202,3 +105,30 @@ type LoggerReply struct {
IsTrue bool IsTrue bool
Error error Error error
} }
func translateLevel(logxiLevel int) hclog.Level {
switch logxiLevel {
case 1000, 10:
// logxi.LevelAll, logxi.LevelTrace:
return hclog.Trace
case 7:
// logxi.LevelDebug:
return hclog.Debug
case 6, 5:
// logxi.LevelInfo, logxi.LevelNotice:
return hclog.Info
case 4:
// logxi.LevelWarn:
return hclog.Warn
case 3, 2, 1, -1:
// logxi.LevelError, logxi.LevelFatal, logxi.LevelAlert, logxi.LevelEmergency:
return hclog.Error
}
return hclog.NoLevel
}

View file

@ -4,17 +4,15 @@ import (
"bufio" "bufio"
"bytes" "bytes"
"io/ioutil" "io/ioutil"
"net/rpc"
"strings" "strings"
"testing" "testing"
plugin "github.com/hashicorp/go-plugin" "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logformat"
log "github.com/mgutz/logxi/v1"
)
func TestLogger_impl(t *testing.T) { plugin "github.com/hashicorp/go-plugin"
var _ log.Logger = new(LoggerClient) "github.com/hashicorp/vault/helper/logging"
} )
func TestLogger_levels(t *testing.T) { func TestLogger_levels(t *testing.T) {
client, server := plugin.TestRPCConn(t) client, server := plugin.TestRPCConn(t)
@ -23,14 +21,14 @@ func TestLogger_levels(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
writer := bufio.NewWriter(&buf) writer := bufio.NewWriter(&buf)
l := logformat.NewVaultLoggerWithWriter(writer, log.LevelTrace) l := logging.NewVaultLoggerWithWriter(writer, hclog.Trace)
server.RegisterName("Plugin", &LoggerServer{ server.RegisterName("Plugin", &LoggerServer{
logger: l, logger: l,
}) })
expected := "foobar" expected := "foobar"
testLogger := &LoggerClient{client: client} testLogger := &deprecatedLoggerClient{client: client}
// Test trace // Test trace
testLogger.Trace(expected) testLogger.Trace(expected)
@ -103,13 +101,13 @@ func TestLogger_isLevels(t *testing.T) {
client, server := plugin.TestRPCConn(t) client, server := plugin.TestRPCConn(t)
defer client.Close() defer client.Close()
l := logformat.NewVaultLoggerWithWriter(ioutil.Discard, log.LevelAll) l := logging.NewVaultLoggerWithWriter(ioutil.Discard, hclog.Trace)
server.RegisterName("Plugin", &LoggerServer{ server.RegisterName("Plugin", &LoggerServer{
logger: l, logger: l,
}) })
testLogger := &LoggerClient{client: client} testLogger := &deprecatedLoggerClient{client: client}
if !testLogger.IsDebug() || !testLogger.IsInfo() || !testLogger.IsTrace() || !testLogger.IsWarn() { if !testLogger.IsDebug() || !testLogger.IsInfo() || !testLogger.IsTrace() || !testLogger.IsWarn() {
t.Fatal("expected logger to return true for all logger level checks") t.Fatal("expected logger to return true for all logger level checks")
@ -123,17 +121,17 @@ func TestLogger_log(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
writer := bufio.NewWriter(&buf) writer := bufio.NewWriter(&buf)
l := logformat.NewVaultLoggerWithWriter(writer, log.LevelTrace) l := logging.NewVaultLoggerWithWriter(writer, hclog.Trace)
server.RegisterName("Plugin", &LoggerServer{ server.RegisterName("Plugin", &LoggerServer{
logger: l, logger: l,
}) })
expected := "foobar" expected := "foobar"
testLogger := &LoggerClient{client: client} testLogger := &deprecatedLoggerClient{client: client}
// Test trace // Test trace 6 = logxi.LevelInfo
testLogger.Log(log.LevelInfo, expected, nil) testLogger.Log(6, expected, nil)
if err := writer.Flush(); err != nil { if err := writer.Flush(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -148,16 +146,117 @@ func TestLogger_setLevel(t *testing.T) {
client, server := plugin.TestRPCConn(t) client, server := plugin.TestRPCConn(t)
defer client.Close() defer client.Close()
l := log.NewLogger(ioutil.Discard, "test-logger") l := hclog.New(&hclog.LoggerOptions{Output: ioutil.Discard})
server.RegisterName("Plugin", &LoggerServer{ server.RegisterName("Plugin", &LoggerServer{
logger: l, logger: l,
}) })
testLogger := &LoggerClient{client: client} testLogger := &deprecatedLoggerClient{client: client}
testLogger.SetLevel(log.LevelWarn) testLogger.SetLevel(4) // 4 == logxi.LevelWarn
if !testLogger.IsWarn() { if !testLogger.IsWarn() {
t.Fatal("expected logger to support warn level") t.Fatal("expected logger to support warn level")
} }
} }
type deprecatedLoggerClient struct {
client *rpc.Client
}
func (l *deprecatedLoggerClient) Trace(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Trace", cArgs, &struct{}{})
}
func (l *deprecatedLoggerClient) Debug(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Debug", cArgs, &struct{}{})
}
func (l *deprecatedLoggerClient) Info(msg string, args ...interface{}) {
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Info", cArgs, &struct{}{})
}
func (l *deprecatedLoggerClient) Warn(msg string, args ...interface{}) error {
var reply LoggerReply
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
err := l.client.Call("Plugin.Warn", cArgs, &reply)
if err != nil {
return err
}
if reply.Error != nil {
return reply.Error
}
return nil
}
func (l *deprecatedLoggerClient) Error(msg string, args ...interface{}) error {
var reply LoggerReply
cArgs := &LoggerArgs{
Msg: msg,
Args: args,
}
err := l.client.Call("Plugin.Error", cArgs, &reply)
if err != nil {
return err
}
if reply.Error != nil {
return reply.Error
}
return nil
}
func (l *deprecatedLoggerClient) Fatal(msg string, args ...interface{}) {
// NOOP since it's not actually used within vault
return
}
func (l *deprecatedLoggerClient) Log(level int, msg string, args []interface{}) {
cArgs := &LoggerArgs{
Level: level,
Msg: msg,
Args: args,
}
l.client.Call("Plugin.Log", cArgs, &struct{}{})
}
func (l *deprecatedLoggerClient) SetLevel(level int) {
l.client.Call("Plugin.SetLevel", level, &struct{}{})
}
func (l *deprecatedLoggerClient) IsTrace() bool {
var reply LoggerReply
l.client.Call("Plugin.IsTrace", new(interface{}), &reply)
return reply.IsTrue
}
func (l *deprecatedLoggerClient) IsDebug() bool {
var reply LoggerReply
l.client.Call("Plugin.IsDebug", new(interface{}), &reply)
return reply.IsTrue
}
func (l *deprecatedLoggerClient) IsInfo() bool {
var reply LoggerReply
l.client.Call("Plugin.IsInfo", new(interface{}), &reply)
return reply.IsTrue
}
func (l *deprecatedLoggerClient) IsWarn() bool {
var reply LoggerReply
l.client.Call("Plugin.IsWarn", new(interface{}), &reply)
return reply.IsTrue
}

View file

@ -4,16 +4,14 @@ import (
"context" "context"
"time" "time"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1"
) )
// backendPluginClient implements logical.Backend and is the // backendPluginClient implements logical.Backend and is the
// go-plugin client. // go-plugin client.
type backendTracingMiddleware struct { type backendTracingMiddleware struct {
logger log.Logger logger log.Logger
transport string
typeStr string
next logical.Backend next logical.Backend
} }
@ -23,19 +21,19 @@ var _ logical.Backend = &backendTracingMiddleware{}
func (b *backendTracingMiddleware) HandleRequest(ctx context.Context, req *logical.Request) (resp *logical.Response, err error) { func (b *backendTracingMiddleware) HandleRequest(ctx context.Context, req *logical.Request) (resp *logical.Response, err error) {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.HandleRequest", "path", req.Path, "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then)) b.logger.Trace("handle request", "path", req.Path, "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.HandleRequest", "path", req.Path, "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("handle request", "path", req.Path, "status", "started")
return b.next.HandleRequest(ctx, req) return b.next.HandleRequest(ctx, req)
} }
func (b *backendTracingMiddleware) SpecialPaths() *logical.Paths { func (b *backendTracingMiddleware) SpecialPaths() *logical.Paths {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.SpecialPaths", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then)) b.logger.Trace("special paths", "status", "finished", "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.SpecialPaths", "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("special paths", "status", "started")
return b.next.SpecialPaths() return b.next.SpecialPaths()
} }
@ -49,45 +47,45 @@ func (b *backendTracingMiddleware) Logger() log.Logger {
func (b *backendTracingMiddleware) HandleExistenceCheck(ctx context.Context, req *logical.Request) (found bool, exists bool, err error) { func (b *backendTracingMiddleware) HandleExistenceCheck(ctx context.Context, req *logical.Request) (found bool, exists bool, err error) {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.HandleExistenceCheck", "path", req.Path, "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then)) b.logger.Trace("handle existence check", "path", req.Path, "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.HandleExistenceCheck", "path", req.Path, "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("handle existence check", "path", req.Path, "status", "started")
return b.next.HandleExistenceCheck(ctx, req) return b.next.HandleExistenceCheck(ctx, req)
} }
func (b *backendTracingMiddleware) Cleanup(ctx context.Context) { func (b *backendTracingMiddleware) Cleanup(ctx context.Context) {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.Cleanup", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then)) b.logger.Trace("cleanup", "status", "finished", "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.Cleanup", "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("cleanup", "status", "started")
b.next.Cleanup(ctx) b.next.Cleanup(ctx)
} }
func (b *backendTracingMiddleware) InvalidateKey(ctx context.Context, key string) { func (b *backendTracingMiddleware) InvalidateKey(ctx context.Context, key string) {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.InvalidateKey", "key", key, "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then)) b.logger.Trace("invalidate key", "key", key, "status", "finished", "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.InvalidateKey", "key", key, "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("invalidate key", "key", key, "status", "started")
b.next.InvalidateKey(ctx, key) b.next.InvalidateKey(ctx, key)
} }
func (b *backendTracingMiddleware) Setup(ctx context.Context, config *logical.BackendConfig) (err error) { func (b *backendTracingMiddleware) Setup(ctx context.Context, config *logical.BackendConfig) (err error) {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.Setup", "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then)) b.logger.Trace("setup", "status", "finished", "err", err, "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.Setup", "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("setup", "status", "started")
return b.next.Setup(ctx, config) return b.next.Setup(ctx, config)
} }
func (b *backendTracingMiddleware) Type() logical.BackendType { func (b *backendTracingMiddleware) Type() logical.BackendType {
defer func(then time.Time) { defer func(then time.Time) {
b.logger.Trace("plugin.Type", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then)) b.logger.Trace("type", "status", "finished", "took", time.Since(then))
}(time.Now()) }(time.Now())
b.logger.Trace("plugin.Type", "status", "started", "type", b.typeStr, "transport", b.transport) b.logger.Trace("type", "status", "started")
return b.next.Type() return b.next.Type()
} }

View file

@ -11,10 +11,10 @@ import (
"sync" "sync"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
log "github.com/mgutz/logxi/v1"
) )
// init registers basic structs with gob which will be used to transport complex // init registers basic structs with gob which will be used to transport complex
@ -101,12 +101,14 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
}, },
} }
namedLogger := logger.Named(pluginRunner.Name)
var client *plugin.Client var client *plugin.Client
var err error var err error
if isMetadataMode { if isMetadataMode {
client, err = pluginRunner.RunMetadataMode(ctx, sys, pluginMap, handshakeConfig, []string{}, logger) client, err = pluginRunner.RunMetadataMode(ctx, sys, pluginMap, handshakeConfig, []string{}, namedLogger)
} else { } else {
client, err = pluginRunner.Run(ctx, sys, pluginMap, handshakeConfig, []string{}, logger) client, err = pluginRunner.Run(ctx, sys, pluginMap, handshakeConfig, []string{}, namedLogger)
} }
if err != nil { if err != nil {
return nil, err return nil, err
@ -140,11 +142,9 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
} }
// Wrap the backend in a tracing middleware // Wrap the backend in a tracing middleware
if logger.IsTrace() { if namedLogger.IsTrace() {
backend = &backendTracingMiddleware{ backend = &backendTracingMiddleware{
logger: logger, logger: namedLogger.With("transport", transport),
transport: transport,
typeStr: pluginRunner.Name,
next: backend, next: backend,
} }
} }

View file

@ -4,7 +4,7 @@ import (
"crypto/tls" "crypto/tls"
"os" "os"
hclog "github.com/hashicorp/go-hclog" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hashicorp/vault/helper/pluginutil" "github.com/hashicorp/vault/helper/pluginutil"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
@ -19,7 +19,7 @@ type TLSProviderFunc func() (*tls.Config, error)
type ServeOpts struct { type ServeOpts struct {
BackendFactoryFunc logical.Factory BackendFactoryFunc logical.Factory
TLSProviderFunc TLSProviderFunc TLSProviderFunc TLSProviderFunc
Logger hclog.Logger Logger log.Logger
} }
// Serve is a helper function used to serve a backend plugin. This // Serve is a helper function used to serve a backend plugin. This
@ -27,8 +27,8 @@ type ServeOpts struct {
func Serve(opts *ServeOpts) error { func Serve(opts *ServeOpts) error {
logger := opts.Logger logger := opts.Logger
if logger == nil { if logger == nil {
logger = hclog.New(&hclog.LoggerOptions{ logger = log.New(&log.LoggerOptions{
Level: hclog.Trace, Level: log.Trace,
Output: os.Stderr, Output: os.Stderr,
JSONFormat: true, JSONFormat: true,
}) })

View file

@ -6,8 +6,8 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
log "github.com/mgutz/logxi/v1" "github.com/hashicorp/vault/helper/logging"
) )
// TestRequest is a helper to create a purely in-memory Request struct. // TestRequest is a helper to create a purely in-memory Request struct.
@ -76,10 +76,9 @@ func TestSystemView() *StaticSystemView {
func TestBackendConfig() *BackendConfig { func TestBackendConfig() *BackendConfig {
bc := &BackendConfig{ bc := &BackendConfig{
Logger: logformat.NewVaultLogger(log.LevelTrace), Logger: logging.NewVaultLogger(log.Trace),
System: TestSystemView(), System: TestSystemView(),
} }
bc.Logger.SetLevel(log.LevelTrace)
return bc return bc
} }

View file

@ -9,11 +9,11 @@ import (
"sort" "sort"
"testing" "testing"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/http" "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/logical" "github.com/hashicorp/vault/logical"
"github.com/hashicorp/vault/physical/inmem" "github.com/hashicorp/vault/physical/inmem"
@ -135,7 +135,7 @@ func Test(tt TestT, c TestCase) {
} }
// Create an in-memory Vault core // Create an in-memory Vault core
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Trace)
phys, err := inmem.NewInmem(nil, logger) phys, err := inmem.NewInmem(nil, logger)
if err != nil { if err != nil {
@ -210,8 +210,8 @@ func Test(tt TestT, c TestCase) {
// Make requests // Make requests
var revoke []*logical.Request var revoke []*logical.Request
for i, s := range c.Steps { for i, s := range c.Steps {
if log.IsWarn() { if logger.IsWarn() {
log.Warn("Executing test step", "step_number", i+1) logger.Warn("Executing test step", "step_number", i+1)
} }
// Create the request // Create the request
@ -294,8 +294,8 @@ func Test(tt TestT, c TestCase) {
// Revoke any secrets we might have. // Revoke any secrets we might have.
var failedRevokes []*logical.Secret var failedRevokes []*logical.Secret
for _, req := range revoke { for _, req := range revoke {
if log.IsWarn() { if logger.IsWarn() {
log.Warn("Revoking secret", "secret", fmt.Sprintf("%#v", req)) logger.Warn("Revoking secret", "secret", fmt.Sprintf("%#v", req))
} }
req.ClientToken = client.Token() req.ClientToken = client.Token()
resp, err := core.HandleRequest(req) resp, err := core.HandleRequest(req)
@ -311,7 +311,7 @@ func Test(tt TestT, c TestCase) {
// Perform any rollbacks. This should no-op if there aren't any. // Perform any rollbacks. This should no-op if there aren't any.
// We set the "immediate" flag here that any backend can pick up on // We set the "immediate" flag here that any backend can pick up on
// to do all rollbacks immediately even if the WAL entries are new. // to do all rollbacks immediately even if the WAL entries are new.
log.Warn("Requesting RollbackOperation") logger.Warn("Requesting RollbackOperation")
req := logical.RollbackRequest(prefix + "/") req := logical.RollbackRequest(prefix + "/")
req.Data["immediate"] = true req.Data["immediate"] = true
req.ClientToken = client.Token() req.ClientToken = client.Token()

View file

@ -12,7 +12,7 @@ import (
"time" "time"
storage "github.com/Azure/azure-sdk-for-go/storage" storage "github.com/Azure/azure-sdk-for-go/storage"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
@ -86,7 +86,7 @@ func NewAzureBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("azure: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

View file

@ -7,9 +7,9 @@ import (
"time" "time"
cleanhttp "github.com/hashicorp/go-cleanhttp" cleanhttp "github.com/hashicorp/go-cleanhttp"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
storage "github.com/Azure/azure-sdk-for-go/storage" storage "github.com/Azure/azure-sdk-for-go/storage"
) )
@ -29,7 +29,7 @@ func TestAzureBackend(t *testing.T) {
cleanupClient, _ := storage.NewBasicClient(accountName, accountKey) cleanupClient, _ := storage.NewBasicClient(accountName, accountKey)
cleanupClient.HTTPClient = cleanhttp.DefaultPooledClient() cleanupClient.HTTPClient = cleanhttp.DefaultPooledClient()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
backend, err := NewAzureBackend(map[string]string{ backend, err := NewAzureBackend(map[string]string{
"container": name, "container": name,

View file

@ -4,9 +4,9 @@ import (
"context" "context"
"sync/atomic" "sync/atomic"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/golang-lru" "github.com/hashicorp/golang-lru"
"github.com/hashicorp/vault/helper/locksutil" "github.com/hashicorp/vault/helper/locksutil"
log "github.com/mgutz/logxi/v1"
) )
const ( const (
@ -41,8 +41,8 @@ var _ Transactional = (*TransactionalCache)(nil)
// NewCache returns a physical cache of the given size. // NewCache returns a physical cache of the given size.
// If no size is provided, the default size is used. // If no size is provided, the default size is used.
func NewCache(b Backend, size int, logger log.Logger) *Cache { func NewCache(b Backend, size int, logger log.Logger) *Cache {
if logger.IsTrace() { if logger.IsDebug() {
logger.Trace("physical/cache: creating LRU cache", "size", size) logger.Debug("creating LRU cache", "size", size)
} }
if size <= 0 { if size <= 0 {
size = DefaultCacheSize size = DefaultCacheSize

View file

@ -10,7 +10,7 @@ import (
"strings" "strings"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/gocql/gocql" "github.com/gocql/gocql"
@ -145,7 +145,8 @@ func NewCassandraBackend(conf map[string]string, logger log.Logger) (physical.Ba
impl := &CassandraBackend{ impl := &CassandraBackend{
sess: sess, sess: sess,
table: table, table: table,
logger: logger} logger: logger,
}
return impl, nil return impl, nil
} }

View file

@ -9,9 +9,9 @@ import (
"time" "time"
"github.com/gocql/gocql" "github.com/gocql/gocql"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
dockertest "gopkg.in/ory-am/dockertest.v3" dockertest "gopkg.in/ory-am/dockertest.v3"
) )
@ -24,7 +24,7 @@ func TestCassandraBackend(t *testing.T) {
defer cleanup() defer cleanup()
// Run vault tests // Run vault tests
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewCassandraBackend(map[string]string{ b, err := NewCassandraBackend(map[string]string{
"hosts": hosts, "hosts": hosts,
"protocol_version": "3", "protocol_version": "3",

View file

@ -12,9 +12,9 @@ import (
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/cockroachdb/cockroach-go/crdb" "github.com/cockroachdb/cockroach-go/crdb"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/strutil" "github.com/hashicorp/vault/helper/strutil"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
// CockroachDB uses the Postgres SQL driver // CockroachDB uses the Postgres SQL driver
_ "github.com/lib/pq" _ "github.com/lib/pq"
@ -58,7 +58,7 @@ func NewCockroachDBBackend(conf map[string]string, logger log.Logger) (physical.
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("cockroachdb: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

View file

@ -8,9 +8,9 @@ import (
dockertest "gopkg.in/ory-am/dockertest.v3" dockertest "gopkg.in/ory-am/dockertest.v3"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
_ "github.com/lib/pq" _ "github.com/lib/pq"
) )
@ -72,7 +72,7 @@ func TestCockroachDBBackend(t *testing.T) {
defer cleanup() defer cleanup()
// Run vault tests // Run vault tests
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewCockroachDBBackend(map[string]string{ b, err := NewCockroachDBBackend(map[string]string{
"connection_url": connURL, "connection_url": connURL,

View file

@ -17,7 +17,7 @@ import (
"golang.org/x/net/http2" "golang.org/x/net/http2"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
@ -110,16 +110,16 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
path = "vault/" path = "vault/"
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config path set", "path", path) logger.Debug("config path set", "path", path)
} }
// Ensure path is suffixed but not prefixed // Ensure path is suffixed but not prefixed
if !strings.HasSuffix(path, "/") { if !strings.HasSuffix(path, "/") {
logger.Warn("physical/consul: appending trailing forward slash to path") logger.Warn("appending trailing forward slash to path")
path += "/" path += "/"
} }
if strings.HasPrefix(path, "/") { if strings.HasPrefix(path, "/") {
logger.Warn("physical/consul: trimming path of its forward slash") logger.Warn("trimming path of its forward slash")
path = strings.TrimPrefix(path, "/") path = strings.TrimPrefix(path, "/")
} }
@ -134,7 +134,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
disableRegistration = b disableRegistration = b
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config disable_registration set", "disable_registration", disableRegistration) logger.Debug("config disable_registration set", "disable_registration", disableRegistration)
} }
// Get the service name to advertise in Consul // Get the service name to advertise in Consul
@ -146,13 +146,13 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
return nil, errors.New("service name must be valid per RFC 1123 and can contain only alphanumeric characters or dashes") return nil, errors.New("service name must be valid per RFC 1123 and can contain only alphanumeric characters or dashes")
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config service set", "service", service) logger.Debug("config service set", "service", service)
} }
// Get the additional tags to attach to the registered service name // Get the additional tags to attach to the registered service name
tags := conf["service_tags"] tags := conf["service_tags"]
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config service_tags set", "service_tags", tags) logger.Debug("config service_tags set", "service_tags", tags)
} }
// Get the service-specific address to override the use of the HA redirect address // Get the service-specific address to override the use of the HA redirect address
@ -162,7 +162,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
serviceAddr = &serviceAddrStr serviceAddr = &serviceAddrStr
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config service_address set", "service_address", serviceAddr) logger.Debug("config service_address set", "service_address", serviceAddr)
} }
checkTimeout := defaultCheckTimeout checkTimeout := defaultCheckTimeout
@ -180,7 +180,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
checkTimeout = d checkTimeout = d
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config check_timeout set", "check_timeout", d) logger.Debug("config check_timeout set", "check_timeout", d)
} }
} }
@ -192,18 +192,18 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
if addr, ok := conf["address"]; ok { if addr, ok := conf["address"]; ok {
consulConf.Address = addr consulConf.Address = addr
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config address set", "address", addr) logger.Debug("config address set", "address", addr)
} }
} }
if scheme, ok := conf["scheme"]; ok { if scheme, ok := conf["scheme"]; ok {
consulConf.Scheme = scheme consulConf.Scheme = scheme
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: config scheme set", "scheme", scheme) logger.Debug("config scheme set", "scheme", scheme)
} }
} }
if token, ok := conf["token"]; ok { if token, ok := conf["token"]; ok {
consulConf.Token = token consulConf.Token = token
logger.Debug("physical/consul: config token set") logger.Debug("config token set")
} }
if consulConf.Scheme == "https" { if consulConf.Scheme == "https" {
@ -216,7 +216,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
if err := http2.ConfigureTransport(consulConf.Transport); err != nil { if err := http2.ConfigureTransport(consulConf.Transport); err != nil {
return nil, err return nil, err
} }
logger.Debug("physical/consul: configured TLS") logger.Debug("configured TLS")
} }
consulConf.HttpClient = &http.Client{Transport: consulConf.Transport} consulConf.HttpClient = &http.Client{Transport: consulConf.Transport}
@ -233,7 +233,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("physical/consul: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }
@ -544,7 +544,7 @@ func (c *ConsulBackend) NotifyActiveStateChange() error {
default: default:
// NOTE: If this occurs Vault's active status could be out of // NOTE: If this occurs Vault's active status could be out of
// sync with Consul until reconcileTimer expires. // sync with Consul until reconcileTimer expires.
c.logger.Warn("physical/consul: Concurrent state change notify dropped") c.logger.Warn("concurrent state change notify dropped")
} }
return nil return nil
@ -556,7 +556,7 @@ func (c *ConsulBackend) NotifySealedStateChange() error {
default: default:
// NOTE: If this occurs Vault's sealed status could be out of // NOTE: If this occurs Vault's sealed status could be out of
// sync with Consul until checkTimer expires. // sync with Consul until checkTimer expires.
c.logger.Warn("physical/consul: Concurrent sealed state change notify dropped") c.logger.Warn("concurrent sealed state change notify dropped")
} }
return nil return nil
@ -629,7 +629,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
serviceID, err := c.reconcileConsul(registeredServiceID, activeFunc, sealedFunc) serviceID, err := c.reconcileConsul(registeredServiceID, activeFunc, sealedFunc)
if err != nil { if err != nil {
if c.logger.IsWarn() { if c.logger.IsWarn() {
c.logger.Warn("physical/consul: reconcile unable to talk with Consul backend", "error", err) c.logger.Warn("reconcile unable to talk with Consul backend", "error", err)
} }
time.Sleep(consulRetryInterval) time.Sleep(consulRetryInterval)
continue continue
@ -655,7 +655,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
sealed := sealedFunc() sealed := sealedFunc()
if err := c.runCheck(sealed); err != nil { if err := c.runCheck(sealed); err != nil {
if c.logger.IsWarn() { if c.logger.IsWarn() {
c.logger.Warn("physical/consul: check unable to talk with Consul backend", "error", err) c.logger.Warn("check unable to talk with Consul backend", "error", err)
} }
time.Sleep(consulRetryInterval) time.Sleep(consulRetryInterval)
continue continue
@ -665,7 +665,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
}() }()
} }
case <-shutdownCh: case <-shutdownCh:
c.logger.Info("physical/consul: Shutting down consul backend") c.logger.Info("shutting down consul backend")
shutdown = true shutdown = true
} }
} }
@ -674,7 +674,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
defer c.serviceLock.RUnlock() defer c.serviceLock.RUnlock()
if err := c.client.Agent().ServiceDeregister(registeredServiceID); err != nil { if err := c.client.Agent().ServiceDeregister(registeredServiceID); err != nil {
if c.logger.IsWarn() { if c.logger.IsWarn() {
c.logger.Warn("physical/consul: service deregistration failed", "error", err) c.logger.Warn("service deregistration failed", "error", err)
} }
} }
} }

View file

@ -9,10 +9,10 @@ import (
"testing" "testing"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/consul/api" "github.com/hashicorp/consul/api"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/helper/strutil" "github.com/hashicorp/vault/helper/strutil"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
dockertest "gopkg.in/ory-am/dockertest.v2" dockertest "gopkg.in/ory-am/dockertest.v2"
@ -36,7 +36,7 @@ func testConsulBackend(t *testing.T) *ConsulBackend {
} }
func testConsulBackendConfig(t *testing.T, conf *consulConf) *ConsulBackend { func testConsulBackendConfig(t *testing.T, conf *consulConf) *ConsulBackend {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
be, err := NewConsulBackend(*conf, logger) be, err := NewConsulBackend(*conf, logger)
if err != nil { if err != nil {
@ -93,7 +93,7 @@ func TestConsul_ServiceTags(t *testing.T) {
"max_parallel": "4", "max_parallel": "4",
"disable_registration": "false", "disable_registration": "false",
} }
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
be, err := NewConsulBackend(consulConfig, logger) be, err := NewConsulBackend(consulConfig, logger)
if err != nil { if err != nil {
@ -138,7 +138,7 @@ func TestConsul_ServiceAddress(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
be, err := NewConsulBackend(test.consulConfig, logger) be, err := NewConsulBackend(test.consulConfig, logger)
if err != nil { if err != nil {
@ -226,7 +226,7 @@ func TestConsul_newConsulBackend(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
be, err := NewConsulBackend(test.consulConfig, logger) be, err := NewConsulBackend(test.consulConfig, logger)
if test.fail { if test.fail {
@ -425,7 +425,7 @@ func TestConsul_serviceID(t *testing.T) {
}, },
} }
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
for _, test := range tests { for _, test := range tests {
be, err := NewConsulBackend(consulConf{ be, err := NewConsulBackend(consulConf{
@ -482,7 +482,7 @@ func TestConsulBackend(t *testing.T) {
client.KV().DeleteTree(randPath, nil) client.KV().DeleteTree(randPath, nil)
}() }()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewConsulBackend(map[string]string{ b, err := NewConsulBackend(map[string]string{
"address": conf.Address, "address": conf.Address,
@ -523,7 +523,7 @@ func TestConsulHABackend(t *testing.T) {
client.KV().DeleteTree(randPath, nil) client.KV().DeleteTree(randPath, nil)
}() }()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewConsulBackend(map[string]string{ b, err := NewConsulBackend(map[string]string{
"address": conf.Address, "address": conf.Address,

View file

@ -16,8 +16,8 @@ import (
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
cleanhttp "github.com/hashicorp/go-cleanhttp" cleanhttp "github.com/hashicorp/go-cleanhttp"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
// CouchDBBackend allows the management of couchdb users // CouchDBBackend allows the management of couchdb users
@ -177,7 +177,7 @@ func buildCouchDBBackend(conf map[string]string, logger log.Logger) (*CouchDBBac
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("couchdb: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

View file

@ -9,9 +9,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
dockertest "gopkg.in/ory-am/dockertest.v3" dockertest "gopkg.in/ory-am/dockertest.v3"
) )
@ -19,7 +19,7 @@ func TestCouchDBBackend(t *testing.T) {
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t) cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
defer cleanup() defer cleanup()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewCouchDBBackend(map[string]string{ b, err := NewCouchDBBackend(map[string]string{
"endpoint": endpoint, "endpoint": endpoint,
@ -38,7 +38,7 @@ func TestTransactionalCouchDBBackend(t *testing.T) {
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t) cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
defer cleanup() defer cleanup()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewTransactionalCouchDBBackend(map[string]string{ b, err := NewTransactionalCouchDBBackend(map[string]string{
"endpoint": endpoint, "endpoint": endpoint,

View file

@ -13,7 +13,7 @@ import (
"sync" "sync"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"

View file

@ -8,9 +8,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
dockertest "gopkg.in/ory-am/dockertest.v3" dockertest "gopkg.in/ory-am/dockertest.v3"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
@ -48,7 +48,7 @@ func TestDynamoDBBackend(t *testing.T) {
}) })
}() }()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewDynamoDBBackend(map[string]string{ b, err := NewDynamoDBBackend(map[string]string{
"access_key": creds.AccessKeyID, "access_key": creds.AccessKeyID,
@ -95,7 +95,7 @@ func TestDynamoDBHABackend(t *testing.T) {
}) })
}() }()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewDynamoDBBackend(map[string]string{ b, err := NewDynamoDBBackend(map[string]string{
"access_key": creds.AccessKeyID, "access_key": creds.AccessKeyID,
"secret_key": creds.SecretAccessKey, "secret_key": creds.SecretAccessKey,

View file

@ -10,8 +10,8 @@ import (
"github.com/coreos/etcd/client" "github.com/coreos/etcd/client"
"github.com/coreos/go-semver/semver" "github.com/coreos/go-semver/semver"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
var ( var (

View file

@ -14,8 +14,8 @@ import (
metrics "github.com/armon/go-metrics" metrics "github.com/armon/go-metrics"
"github.com/coreos/etcd/client" "github.com/coreos/etcd/client"
"github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/transport"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
const ( const (

View file

@ -14,9 +14,9 @@ import (
"github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/clientv3"
"github.com/coreos/etcd/clientv3/concurrency" "github.com/coreos/etcd/clientv3/concurrency"
"github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/transport"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/strutil" "github.com/hashicorp/vault/helper/strutil"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"golang.org/x/net/context" "golang.org/x/net/context"
) )

View file

@ -6,9 +6,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestEtcd3Backend(t *testing.T) { func TestEtcd3Backend(t *testing.T) {
@ -17,7 +17,7 @@ func TestEtcd3Backend(t *testing.T) {
t.Skipf("Skipped. No etcd3 server found") t.Skipf("Skipped. No etcd3 server found")
} }
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewEtcdBackend(map[string]string{ b, err := NewEtcdBackend(map[string]string{
"path": fmt.Sprintf("/vault-%d", time.Now().Unix()), "path": fmt.Sprintf("/vault-%d", time.Now().Unix()),

View file

@ -6,9 +6,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"github.com/coreos/etcd/client" "github.com/coreos/etcd/client"
"golang.org/x/net/context" "golang.org/x/net/context"
@ -51,7 +51,7 @@ func TestEtcdBackend(t *testing.T) {
// Generate new etcd backend. The etcd address is read from ETCD_ADDR. No // Generate new etcd backend. The etcd address is read from ETCD_ADDR. No
// need to provide it explicitly. // need to provide it explicitly.
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewEtcdBackend(map[string]string{ b, err := NewEtcdBackend(map[string]string{
"path": randPath, "path": randPath,

View file

@ -10,7 +10,7 @@ import (
"strings" "strings"
"sync" "sync"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/consts" "github.com/hashicorp/vault/helper/consts"
"github.com/hashicorp/vault/helper/jsonutil" "github.com/hashicorp/vault/helper/jsonutil"

View file

@ -9,9 +9,9 @@ import (
"reflect" "reflect"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestFileBackend_Base64URLEncoding(t *testing.T) { func TestFileBackend_Base64URLEncoding(t *testing.T) {
@ -21,7 +21,7 @@ func TestFileBackend_Base64URLEncoding(t *testing.T) {
} }
defer os.RemoveAll(backendPath) defer os.RemoveAll(backendPath)
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewFileBackend(map[string]string{ b, err := NewFileBackend(map[string]string{
"path": backendPath, "path": backendPath,
@ -140,7 +140,7 @@ func TestFileBackend_ValidatePath(t *testing.T) {
} }
defer os.RemoveAll(dir) defer os.RemoveAll(dir)
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewFileBackend(map[string]string{ b, err := NewFileBackend(map[string]string{
"path": dir, "path": dir,
@ -164,7 +164,7 @@ func TestFileBackend(t *testing.T) {
} }
defer os.RemoveAll(dir) defer os.RemoveAll(dir)
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewFileBackend(map[string]string{ b, err := NewFileBackend(map[string]string{
"path": dir, "path": dir,

View file

@ -11,9 +11,9 @@ import (
"time" "time"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/useragent" "github.com/hashicorp/vault/helper/useragent"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"cloud.google.com/go/storage" "cloud.google.com/go/storage"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
@ -108,6 +108,7 @@ func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error
if err != nil { if err != nil {
return nil, errwrap.Wrapf("failed to parse chunk_size: {{err}}", err) return nil, errwrap.Wrapf("failed to parse chunk_size: {{err}}", err)
} }
// Values are specified as kb, but the API expects them as bytes. // Values are specified as kb, but the API expects them as bytes.
chunkSize = chunkSize * 1024 chunkSize = chunkSize * 1024

View file

@ -8,9 +8,9 @@ import (
"time" "time"
"cloud.google.com/go/storage" "cloud.google.com/go/storage"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -40,7 +40,7 @@ func TestHABackend(t *testing.T) {
backend, err := NewBackend(map[string]string{ backend, err := NewBackend(map[string]string{
"bucket": bucket, "bucket": bucket,
"ha_enabled": "true", "ha_enabled": "true",
}, logformat.NewVaultLogger(log.LevelTrace)) }, logging.NewVaultLogger(log.Trace))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -8,9 +8,9 @@ import (
"time" "time"
"cloud.google.com/go/storage" "cloud.google.com/go/storage"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"golang.org/x/net/context" "golang.org/x/net/context"
"google.golang.org/api/googleapi" "google.golang.org/api/googleapi"
) )
@ -52,7 +52,7 @@ func TestBackend(t *testing.T) {
backend, err := NewBackend(map[string]string{ backend, err := NewBackend(map[string]string{
"bucket": bucket, "bucket": bucket,
"ha_enabled": "false", "ha_enabled": "false",
}, logformat.NewVaultLogger(log.LevelTrace)) }, logging.NewVaultLogger(log.Trace))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -4,13 +4,13 @@ import (
"context" "context"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestCache(t *testing.T) { func TestCache(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inm, err := NewInmem(nil, logger) inm, err := NewInmem(nil, logger)
if err != nil { if err != nil {
@ -22,7 +22,7 @@ func TestCache(t *testing.T) {
} }
func TestCache_Purge(t *testing.T) { func TestCache_Purge(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inm, err := NewInmem(nil, logger) inm, err := NewInmem(nil, logger)
if err != nil { if err != nil {
@ -69,7 +69,7 @@ func TestCache_Purge(t *testing.T) {
} }
func TestCache_Disable(t *testing.T) { func TestCache_Disable(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inm, err := NewInmem(nil, logger) inm, err := NewInmem(nil, logger)
if err != nil { if err != nil {

View file

@ -7,8 +7,8 @@ import (
"sync" "sync"
"sync/atomic" "sync/atomic"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"github.com/armon/go-radix" "github.com/armon/go-radix"
) )

View file

@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"sync" "sync"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
type InmemHABackend struct { type InmemHABackend struct {

View file

@ -3,13 +3,13 @@ package inmem
import ( import (
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestInmemHA(t *testing.T) { func TestInmemHA(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inm, err := NewInmemHA(nil, logger) inm, err := NewInmemHA(nil, logger)
if err != nil { if err != nil {

View file

@ -3,13 +3,13 @@ package inmem
import ( import (
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestInmem(t *testing.T) { func TestInmem(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
inm, err := NewInmem(nil, logger) inm, err := NewInmem(nil, logger)
if err != nil { if err != nil {

View file

@ -4,9 +4,9 @@ import (
"context" "context"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
func TestPhysicalView_impl(t *testing.T) { func TestPhysicalView_impl(t *testing.T) {
@ -14,7 +14,7 @@ func TestPhysicalView_impl(t *testing.T) {
} }
func newInmemTestBackend() (physical.Backend, error) { func newInmemTestBackend() (physical.Backend, error) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
return NewInmem(nil, logger) return NewInmem(nil, logger)
} }

View file

@ -8,9 +8,9 @@ import (
"testing" "testing"
radix "github.com/armon/go-radix" radix "github.com/armon/go-radix"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
type faultyPseudo struct { type faultyPseudo struct {
@ -70,7 +70,7 @@ func newFaultyPseudo(logger log.Logger, faultyPaths []string) *faultyPseudo {
underlying: InmemBackend{ underlying: InmemBackend{
root: radix.New(), root: radix.New(),
permitPool: physical.NewPermitPool(1), permitPool: physical.NewPermitPool(1),
logger: logger, logger: logger.Named("storage.inmembackend"),
}, },
faultyPaths: make(map[string]struct{}, len(faultyPaths)), faultyPaths: make(map[string]struct{}, len(faultyPaths)),
} }
@ -81,21 +81,21 @@ func newFaultyPseudo(logger log.Logger, faultyPaths []string) *faultyPseudo {
} }
func TestPseudo_Basic(t *testing.T) { func TestPseudo_Basic(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
p := newFaultyPseudo(logger, nil) p := newFaultyPseudo(logger, nil)
physical.ExerciseBackend(t, p) physical.ExerciseBackend(t, p)
physical.ExerciseBackend_ListPrefix(t, p) physical.ExerciseBackend_ListPrefix(t, p)
} }
func TestPseudo_SuccessfulTransaction(t *testing.T) { func TestPseudo_SuccessfulTransaction(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
p := newFaultyPseudo(logger, nil) p := newFaultyPseudo(logger, nil)
physical.ExerciseTransactionalBackend(t, p) physical.ExerciseTransactionalBackend(t, p)
} }
func TestPseudo_FailedTransaction(t *testing.T) { func TestPseudo_FailedTransaction(t *testing.T) {
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
p := newFaultyPseudo(logger, []string{"zip"}) p := newFaultyPseudo(logger, []string{"zip"})
txns := physical.SetupTestingTransactions(t, p) txns := physical.SetupTestingTransactions(t, p)

View file

@ -5,7 +5,7 @@ import (
"math/rand" "math/rand"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
) )
const ( const (
@ -37,7 +37,7 @@ func NewLatencyInjector(b Backend, latency time.Duration, jitter int, logger log
if jitter < 0 || jitter > 100 { if jitter < 0 || jitter > 100 {
jitter = DefaultJitterPercent jitter = DefaultJitterPercent
} }
logger.Info("physical/latency: creating latency injector") logger.Info("creating latency injector")
return &LatencyInjector{ return &LatencyInjector{
backend: b, backend: b,

View file

@ -14,12 +14,12 @@ import (
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
"github.com/joyent/triton-go" "github.com/joyent/triton-go"
"github.com/joyent/triton-go/authentication" "github.com/joyent/triton-go/authentication"
"github.com/joyent/triton-go/errors" "github.com/joyent/triton-go/errors"
"github.com/joyent/triton-go/storage" "github.com/joyent/triton-go/storage"
log "github.com/mgutz/logxi/v1"
) )
const mantaDefaultRootStore = "/stor" const mantaDefaultRootStore = "/stor"
@ -74,7 +74,7 @@ func NewMantaBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("manta: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

View file

@ -9,13 +9,13 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
"github.com/joyent/triton-go" "github.com/joyent/triton-go"
"github.com/joyent/triton-go/authentication" "github.com/joyent/triton-go/authentication"
tt "github.com/joyent/triton-go/errors" tt "github.com/joyent/triton-go/errors"
"github.com/joyent/triton-go/storage" "github.com/joyent/triton-go/storage"
log "github.com/mgutz/logxi/v1"
) )
func TestMantaBackend(t *testing.T) { func TestMantaBackend(t *testing.T) {
@ -49,11 +49,11 @@ func TestMantaBackend(t *testing.T) {
t.Fatalf("failed initialising Storage client: %s", err.Error()) t.Fatalf("failed initialising Storage client: %s", err.Error())
} }
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
mb := &MantaBackend{ mb := &MantaBackend{
client: client, client: client,
directory: testHarnessBucket, directory: testHarnessBucket,
logger: logger, logger: logger.Named("storage.mantabackend"),
permitPool: physical.NewPermitPool(128), permitPool: physical.NewPermitPool(128),
} }

View file

@ -12,9 +12,9 @@ import (
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
_ "github.com/denisenkom/go-mssqldb" _ "github.com/denisenkom/go-mssqldb"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/strutil" "github.com/hashicorp/vault/helper/strutil"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
) )
// Verify MSSQLBackend satisfies the correct interfaces // Verify MSSQLBackend satisfies the correct interfaces
@ -53,7 +53,7 @@ func NewMSSQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("mysql: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} else { } else {
maxParInt = physical.DefaultParallelOperations maxParInt = physical.DefaultParallelOperations

View file

@ -4,9 +4,9 @@ import (
"os" "os"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
_ "github.com/denisenkom/go-mssqldb" _ "github.com/denisenkom/go-mssqldb"
) )
@ -31,7 +31,7 @@ func TestMSSQLBackend(t *testing.T) {
password := os.Getenv("MSSQL_PASSWORD") password := os.Getenv("MSSQL_PASSWORD")
// Run vault tests // Run vault tests
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewMSSQLBackend(map[string]string{ b, err := NewMSSQLBackend(map[string]string{
"server": server, "server": server,

View file

@ -13,7 +13,7 @@ import (
"strings" "strings"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
mysql "github.com/go-sql-driver/mysql" mysql "github.com/go-sql-driver/mysql"
@ -79,7 +79,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_idle_connections parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_idle_connections parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("mysql: max_idle_connections set", "max_idle_connections", maxIdleConnInt) logger.Debug("max_idle_connections set", "max_idle_connections", maxIdleConnInt)
} }
} }
@ -91,7 +91,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_connection_lifetime parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_connection_lifetime parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("mysql: max_connection_lifetime set", "max_connection_lifetime", maxConnLifeInt) logger.Debug("max_connection_lifetime set", "max_connection_lifetime", maxConnLifeInt)
} }
} }
@ -103,7 +103,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("mysql: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} else { } else {
maxParInt = physical.DefaultParallelOperations maxParInt = physical.DefaultParallelOperations

View file

@ -4,9 +4,9 @@ import (
"os" "os"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
) )
@ -31,7 +31,7 @@ func TestMySQLBackend(t *testing.T) {
password := os.Getenv("MYSQL_PASSWORD") password := os.Getenv("MYSQL_PASSWORD")
// Run vault tests // Run vault tests
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewMySQLBackend(map[string]string{ b, err := NewMySQLBackend(map[string]string{
"address": address, "address": address,

View file

@ -5,7 +5,7 @@ import (
"strings" "strings"
"sync" "sync"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
) )
const DefaultParallelOperations = 128 const DefaultParallelOperations = 128

View file

@ -10,7 +10,8 @@ import (
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1" //log "github.com/hashicorp/go-hclog"
log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/lib/pq" "github.com/lib/pq"
@ -56,7 +57,7 @@ func NewPostgreSQLBackend(conf map[string]string, logger log.Logger) (physical.B
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("postgres: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} else { } else {
maxParInt = physical.DefaultParallelOperations maxParInt = physical.DefaultParallelOperations

View file

@ -4,9 +4,9 @@ import (
"os" "os"
"testing" "testing"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
_ "github.com/lib/pq" _ "github.com/lib/pq"
) )
@ -23,7 +23,7 @@ func TestPostgreSQLBackend(t *testing.T) {
} }
// Run vault tests // Run vault tests
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
b, err := NewPostgreSQLBackend(map[string]string{ b, err := NewPostgreSQLBackend(map[string]string{
"connection_url": connURL, "connection_url": connURL,

View file

@ -12,7 +12,7 @@ import (
"strings" "strings"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
@ -131,7 +131,7 @@ func NewS3Backend(conf map[string]string, logger log.Logger) (physical.Backend,
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("s3: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

View file

@ -7,10 +7,10 @@ import (
"testing" "testing"
"time" "time"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/awsutil" "github.com/hashicorp/vault/helper/awsutil"
"github.com/hashicorp/vault/helper/logformat" "github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
@ -79,7 +79,7 @@ func TestS3Backend(t *testing.T) {
} }
}() }()
logger := logformat.NewVaultLogger(log.LevelTrace) logger := logging.NewVaultLogger(log.Debug)
// This uses the same logic to find the AWS credentials as we did at the beginning of the test // This uses the same logic to find the AWS credentials as we did at the beginning of the test
b, err := NewS3Backend(map[string]string{ b, err := NewS3Backend(map[string]string{

View file

@ -10,10 +10,10 @@ import (
metrics "github.com/armon/go-metrics" metrics "github.com/armon/go-metrics"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/strutil" "github.com/hashicorp/vault/helper/strutil"
"github.com/hashicorp/vault/helper/useragent" "github.com/hashicorp/vault/helper/useragent"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"google.golang.org/api/iterator" "google.golang.org/api/iterator"
"google.golang.org/api/option" "google.golang.org/api/option"
"google.golang.org/grpc/codes" "google.golang.org/grpc/codes"
@ -94,7 +94,7 @@ type Backend struct {
// configuration. This uses the official Golang Cloud SDK and therefore supports // configuration. This uses the official Golang Cloud SDK and therefore supports
// specifying credentials via envvars, credential files, etc. // specifying credentials via envvars, credential files, etc.
func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error) { func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error) {
logger.Debug("physical/spanner: configuring backend") logger.Debug("configuring backend")
// Database name // Database name
database := os.Getenv(envDatabase) database := os.Getenv(envDatabase)
@ -143,14 +143,14 @@ func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error
return nil, errwrap.Wrapf("failed to parse max_parallel: {{err}}", err) return nil, errwrap.Wrapf("failed to parse max_parallel: {{err}}", err)
} }
logger.Debug("physical/spanner: configuration", logger.Debug("configuration",
"database", database, "database", database,
"table", table, "table", table,
"haEnabled", haEnabled, "haEnabled", haEnabled,
"haTable", haTable, "haTable", haTable,
"maxParallel", maxParallel, "maxParallel", maxParallel,
) )
logger.Debug("physical/spanner: creating client") logger.Debug("creating client")
ctx := context.Background() ctx := context.Background()
client, err := spanner.NewClient(ctx, database, client, err := spanner.NewClient(ctx, database,

View file

@ -5,9 +5,9 @@ import (
"testing" "testing"
"cloud.google.com/go/spanner" "cloud.google.com/go/spanner"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -43,7 +43,7 @@ func TestHABackend(t *testing.T) {
"table": table, "table": table,
"ha_table": haTable, "ha_table": haTable,
"ha_enabled": "true", "ha_enabled": "true",
}, logformat.NewVaultLogger(log.LevelTrace)) }, logging.NewVaultLogger(log.Debug))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -5,9 +5,9 @@ import (
"testing" "testing"
"cloud.google.com/go/spanner" "cloud.google.com/go/spanner"
"github.com/hashicorp/vault/helper/logformat" log "github.com/hashicorp/go-hclog"
"github.com/hashicorp/vault/helper/logging"
"github.com/hashicorp/vault/physical" "github.com/hashicorp/vault/physical"
log "github.com/mgutz/logxi/v1"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -46,7 +46,7 @@ func TestBackend(t *testing.T) {
"database": database, "database": database,
"table": table, "table": table,
"ha_enabled": "false", "ha_enabled": "false",
}, logformat.NewVaultLogger(log.LevelTrace)) }, logging.NewVaultLogger(log.Debug))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -9,7 +9,7 @@ import (
"strings" "strings"
"time" "time"
log "github.com/mgutz/logxi/v1" log "github.com/hashicorp/go-hclog"
"github.com/armon/go-metrics" "github.com/armon/go-metrics"
"github.com/hashicorp/errwrap" "github.com/hashicorp/errwrap"
@ -113,7 +113,7 @@ func NewSwiftBackend(conf map[string]string, logger log.Logger) (physical.Backen
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err) return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
} }
if logger.IsDebug() { if logger.IsDebug() {
logger.Debug("swift: max_parallel set", "max_parallel", maxParInt) logger.Debug("max_parallel set", "max_parallel", maxParInt)
} }
} }

Some files were not shown because too many files have changed in this diff Show more