diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.3.11
+
+Add missing `MonadState` and `MonadWriter` instances for `NoLoggingT` [#51](https://github.com/kazu-yamamoto/logger/pull/51)
+
 ## 0.3.10.1
 
 Remove unnecessary extra newline in log messages.
diff --git a/Control/Monad/Logger.hs b/Control/Monad/Logger.hs
--- a/Control/Monad/Logger.hs
+++ b/Control/Monad/Logger.hs
@@ -599,6 +599,18 @@
   listen = mapLoggingT listen
   pass   = mapLoggingT pass
 
+mapNoLoggingT :: (m a -> n b) -> NoLoggingT m a -> NoLoggingT n b
+mapNoLoggingT f = NoLoggingT . f . runNoLoggingT
+
+instance MonadState s m => MonadState s (NoLoggingT m) where
+    get = Trans.lift get
+    put = Trans.lift . put
+
+instance MonadWriter w m => MonadWriter w (NoLoggingT m) where
+    tell   = Trans.lift . tell
+    listen = mapNoLoggingT listen
+    pass   = mapNoLoggingT pass
+
 defaultLoc :: Loc
 defaultLoc = Loc "<unknown>" "<unknown>" "<unknown>" (0,0) (0,0)
 
diff --git a/monad-logger.cabal b/monad-logger.cabal
--- a/monad-logger.cabal
+++ b/monad-logger.cabal
@@ -1,5 +1,5 @@
 name:                monad-logger
-version:             0.3.10.1
+version:             0.3.11
 synopsis:            A class of monads which can log messages.
 description:         This package uses template-haskell for determining source code locations of messages.
 homepage:            https://github.com/kazu-yamamoto/logger
