diff --git a/.pending/improvements/sdk/3512-Implement-Logge b/.pending/improvements/sdk/3512-Implement-Logge new file mode 100644 index 0000000000..191e416413 --- /dev/null +++ b/.pending/improvements/sdk/3512-Implement-Logge @@ -0,0 +1 @@ +#3512 Implement Logger method on each module's keeper. diff --git a/simapp/app.go b/simapp/app.go index 0b41b8f3a8..49782374e8 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -173,7 +173,7 @@ func NewSimApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo genutil.NewAppModule(app.accountKeeper, app.stakingKeeper, app.BaseApp.DeliverTx), auth.NewAppModule(app.accountKeeper, app.feeCollectionKeeper), bank.NewAppModule(app.bankKeeper, app.accountKeeper), - crisis.NewAppModule(app.crisisKeeper, app.Logger()), + crisis.NewAppModule(app.crisisKeeper), distr.NewAppModule(app.distrKeeper), gov.NewAppModule(app.govKeeper), mint.NewAppModule(app.mintKeeper), diff --git a/simapp/export.go b/simapp/export.go index de2b2bac34..8e6af96f61 100644 --- a/simapp/export.go +++ b/simapp/export.go @@ -59,7 +59,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailWhiteList []str } /* Just to be safe, assert the invariants on current state. */ - app.crisisKeeper.AssertInvariants(ctx, app.Logger()) + app.crisisKeeper.AssertInvariants(ctx) /* Handle fee distribution state. */ diff --git a/x/auth/keeper.go b/x/auth/keeper.go index 61898b924d..f70d443055 100644 --- a/x/auth/keeper.go +++ b/x/auth/keeper.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/tendermint/tendermint/crypto" + "github.com/tendermint/tendermint/libs/log" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -42,6 +43,11 @@ func NewAccountKeeper( } } +// Logger returns a module-specific logger. +func (ak AccountKeeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + // NewAccountWithAddress implements sdk.AccountKeeper. func (ak AccountKeeper) NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) exported.Account { acc := ak.proto() diff --git a/x/bank/internal/keeper/keeper.go b/x/bank/internal/keeper/keeper.go index 2ae5b9f7e6..5b29516d26 100644 --- a/x/bank/internal/keeper/keeper.go +++ b/x/bank/internal/keeper/keeper.go @@ -4,6 +4,8 @@ import ( "fmt" "time" + "github.com/tendermint/tendermint/libs/log" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/exported" "github.com/cosmos/cosmos-sdk/x/bank/internal/types" @@ -212,6 +214,11 @@ func (keeper BaseViewKeeper) Codespace() sdk.CodespaceType { return keeper.codespace } +// Logger returns a module-specific logger. +func (keeper BaseViewKeeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + func getCoins(ctx sdk.Context, ak types.AccountKeeper, addr sdk.AccAddress) sdk.Coins { acc := ak.GetAccount(ctx, addr) if acc == nil { diff --git a/x/crisis/abci.go b/x/crisis/abci.go index 86dc23adf5..590c1fca8a 100644 --- a/x/crisis/abci.go +++ b/x/crisis/abci.go @@ -1,16 +1,14 @@ package crisis import ( - "github.com/tendermint/tendermint/libs/log" - sdk "github.com/cosmos/cosmos-sdk/types" ) // check all registered invariants -func EndBlocker(ctx sdk.Context, k Keeper, logger log.Logger) { +func EndBlocker(ctx sdk.Context, k Keeper) { if k.invCheckPeriod == 0 || ctx.BlockHeight()%int64(k.invCheckPeriod) != 0 { // skip running the invariant check return } - k.AssertInvariants(ctx, logger) + k.AssertInvariants(ctx) } diff --git a/x/crisis/keeper.go b/x/crisis/keeper.go index 7bb9d4aaa0..1468dcc2f2 100644 --- a/x/crisis/keeper.go +++ b/x/crisis/keeper.go @@ -37,6 +37,11 @@ func NewKeeper(paramSpace params.Subspace, invCheckPeriod uint, } } +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + // register routes for the func (k *Keeper) RegisterRoute(moduleName, route string, invar sdk.Invariant) { invarRoute := types.NewInvarRoute(moduleName, route, invar) @@ -58,7 +63,8 @@ func (k Keeper) Invariants() []sdk.Invariant { } // assert all invariants -func (k Keeper) AssertInvariants(ctx sdk.Context, logger log.Logger) { +func (k Keeper) AssertInvariants(ctx sdk.Context) { + logger := k.Logger(ctx) start := time.Now() invarRoutes := k.Routes() @@ -76,7 +82,7 @@ func (k Keeper) AssertInvariants(ctx sdk.Context, logger log.Logger) { end := time.Now() diff := end.Sub(start) - logger.With("module", "x/crisis").Info("asserted all invariants", "duration", diff, "height", ctx.BlockHeight()) + logger.Info("asserted all invariants", "duration", diff, "height", ctx.BlockHeight()) } // DONTCOVER diff --git a/x/crisis/module.go b/x/crisis/module.go index cecf816d73..d544b80724 100644 --- a/x/crisis/module.go +++ b/x/crisis/module.go @@ -7,7 +7,6 @@ import ( "github.com/spf13/cobra" abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" "github.com/cosmos/cosmos-sdk/client/context" "github.com/cosmos/cosmos-sdk/codec" @@ -63,15 +62,13 @@ func (AppModuleBasic) GetQueryCmd(_ *codec.Codec) *cobra.Command { return nil } type AppModule struct { AppModuleBasic keeper Keeper - logger log.Logger } // NewAppModule creates a new AppModule object -func NewAppModule(keeper Keeper, logger log.Logger) AppModule { +func NewAppModule(keeper Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{}, keeper: keeper, - logger: logger, } } @@ -105,7 +102,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.Va ModuleCdc.MustUnmarshalJSON(data, &genesisState) InitGenesis(ctx, am.keeper, genesisState) - am.keeper.AssertInvariants(ctx, am.logger) + am.keeper.AssertInvariants(ctx) return []abci.ValidatorUpdate{} } @@ -120,6 +117,6 @@ func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} // module end-block func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - EndBlocker(ctx, am.keeper, am.logger) + EndBlocker(ctx, am.keeper) return []abci.ValidatorUpdate{} } diff --git a/x/distribution/keeper/keeper.go b/x/distribution/keeper/keeper.go index 7c29dbfb8d..68c234dabc 100644 --- a/x/distribution/keeper/keeper.go +++ b/x/distribution/keeper/keeper.go @@ -1,6 +1,8 @@ package keeper import ( + "fmt" + "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -38,7 +40,9 @@ func NewKeeper(cdc *codec.Codec, key sdk.StoreKey, paramSpace params.Subspace, c } // Logger returns a module-specific logger. -func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/distr") } +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} // set withdraw address func (k Keeper) SetWithdrawAddr(ctx sdk.Context, delegatorAddr sdk.AccAddress, withdrawAddr sdk.AccAddress) sdk.Error { diff --git a/x/gov/keeper.go b/x/gov/keeper.go index e6d53945e1..c25105be38 100644 --- a/x/gov/keeper.go +++ b/x/gov/keeper.go @@ -75,7 +75,9 @@ func NewKeeper( } // Logger returns a module-specific logger. -func (keeper Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/gov") } +func (keeper Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} // Params diff --git a/x/mint/internal/keeper/keeper.go b/x/mint/internal/keeper/keeper.go index dce7f91624..8d8047e6db 100644 --- a/x/mint/internal/keeper/keeper.go +++ b/x/mint/internal/keeper/keeper.go @@ -1,6 +1,10 @@ package keeper import ( + "fmt" + + "github.com/tendermint/tendermint/libs/log" + "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/mint/internal/types" @@ -33,6 +37,11 @@ func NewKeeper( //______________________________________________________________________ +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + // get the minter func (k Keeper) GetMinter(ctx sdk.Context) (minter types.Minter) { store := ctx.KVStore(k.storeKey) diff --git a/x/params/keeper.go b/x/params/keeper.go index d7e67eccb6..a3dc5c0774 100644 --- a/x/params/keeper.go +++ b/x/params/keeper.go @@ -1,9 +1,12 @@ package params import ( + "fmt" + "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/params/subspace" + "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/tendermint/tendermint/libs/log" ) @@ -32,7 +35,7 @@ func NewKeeper(cdc *codec.Codec, key *sdk.KVStoreKey, tkey *sdk.TransientStoreKe // Logger returns a module-specific logger. func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", "x/params") + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } // Allocate subspace used for keepers diff --git a/x/slashing/keeper.go b/x/slashing/keeper.go index fe6fde2f1d..91234d495b 100644 --- a/x/slashing/keeper.go +++ b/x/slashing/keeper.go @@ -37,7 +37,9 @@ func NewKeeper(cdc *codec.Codec, key sdk.StoreKey, sk types.StakingKeeper, param } // Logger returns a module-specific logger. -func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/slashing") } +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} // handle a validator signing two blocks at the same height // power: power of the double-signing validator at the height of infraction diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index c231331466..28a5b59a1f 100644 --- a/x/staking/keeper/keeper.go +++ b/x/staking/keeper/keeper.go @@ -2,6 +2,7 @@ package keeper import ( "container/list" + "fmt" "github.com/tendermint/tendermint/libs/log" @@ -52,7 +53,9 @@ func NewKeeper(cdc *codec.Codec, key, tkey sdk.StoreKey, bk types.BankKeeper, } // Logger returns a module-specific logger. -func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/staking") } +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} // Set the validator hooks func (k *Keeper) SetHooks(sh types.StakingHooks) *Keeper {