diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.3.18
+
+* Added logTHShow and logDebugSH, logInfoSH, etc. Accepts an argument of `Show a => a` instead of just `Text`.
+
 ## 0.3.17
 
 * log to a chan [#74](https://github.com/kazu-yamamoto/logger/pull/74)
diff --git a/Control/Monad/Logger.hs b/Control/Monad/Logger.hs
--- a/Control/Monad/Logger.hs
+++ b/Control/Monad/Logger.hs
@@ -48,6 +48,12 @@
     , logWarn
     , logError
     , logOther
+    -- * TH logging of showable values
+    , logDebugSH
+    , logInfoSH
+    , logWarnSH
+    , logErrorSH
+    , logOtherSH
     -- * TH logging with source
     , logDebugS
     , logInfoS
@@ -246,8 +252,17 @@
 #if WITH_TEMPLATE_HASKELL
 logTH :: LogLevel -> Q Exp
 logTH level =
-    [|monadLoggerLog $(qLocation >>= liftLoc) (pack "") $(lift level) . (id :: Text -> Text)|]
+    [|monadLoggerLog $(qLocation >>= liftLoc) (pack "") $(lift level)
+     . (id :: Text -> Text)|]
 
+-- | Generates a function that takes a 'LogLevel' and a 'Show a => a'.
+--
+-- @since 0.3.18
+logTHShow :: LogLevel -> Q Exp
+logTHShow level =
+    [|monadLoggerLog $(qLocation >>= liftLoc) (pack "") $(lift level)
+      . ((pack . show) :: Show a => a -> Text)|]
+
 -- | Generates a function that takes a 'Text' and logs a 'LevelDebug' message. Usage:
 --
 -- > $(logDebug) "This is a debug log message"
@@ -269,6 +284,31 @@
 -- > $(logOther "My new level") "This is a log message"
 logOther :: Text -> Q Exp
 logOther = logTH . LevelOther
+
+
+-- | Generates a function that takes a 'Show a => a' and logs a 'LevelDebug' message. Usage:
+--
+-- > $(logDebugSH) (Just "This is a debug log message")
+--
+-- @since 0.3.18
+logDebugSH :: Q Exp
+logDebugSH = logTHShow LevelDebug
+
+-- | See 'logDebugSH'
+logInfoSH :: Q Exp
+logInfoSH = logTHShow LevelInfo
+-- | See 'logDebugSH'
+logWarnSH :: Q Exp
+logWarnSH = logTHShow LevelWarn
+-- | See 'logDebugSH'
+logErrorSH :: Q Exp
+logErrorSH = logTHShow LevelError
+
+-- | Generates a function that takes a 'Show a => a' and logs a 'LevelOther' message. Usage:
+--
+-- > $(logOtherSH "My new level") "This is a log message"
+logOtherSH :: Text -> Q Exp
+logOtherSH = logTHShow . LevelOther
 
 -- | Lift a location into an Exp.
 --
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.17
+version:             0.3.18
 synopsis:            A class of monads which can log messages.
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/monad-logger>.
 homepage:            https://github.com/kazu-yamamoto/logger
