diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# log-base-0.11.1.0 (2022-04-04)
+* Add support for aeson 2.0.1.0.
+* Add support for GHC 9.2.
+* Drop support for GHC < 8.8.
+
 # log-base-0.11.0.0 (2021-10-11)
 * Add support for defining maximum log level.
 
diff --git a/log-base.cabal b/log-base.cabal
--- a/log-base.cabal
+++ b/log-base.cabal
@@ -1,5 +1,5 @@
 name:                log-base
-version:             0.11.0.0
+version:             0.11.1.0
 synopsis:            Structured logging solution (base package)
 
 description:         A library that provides a way to record structured log
@@ -21,8 +21,7 @@
 build-type:          Simple
 cabal-version:       >=1.10
 extra-source-files:  CHANGELOG.md, README.md
-tested-with:         GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
-                      || ==9.0.1
+tested-with:         GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.2
 
 Source-repository head
   Type:     git
@@ -36,11 +35,12 @@
                        Log.Backend.Text,
                        Log.Class,
                        Log.Data,
+                       Log.Internal.Aeson.Compat,
                        Log.Internal.Logger,
                        Log.Logger,
                        Log.Monad
-  build-depends:       base >= 4.9 && <5,
-                       aeson >=0.11.0.0 && <1.6,
+  build-depends:       base >= 4.13 && <5,
+                       aeson >= 1.0,
                        aeson-pretty >=0.8.2,
                        bytestring,
                        deepseq,
diff --git a/src/Log/Internal/Aeson/Compat.hs b/src/Log/Internal/Aeson/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Log/Internal/Aeson/Compat.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE CPP #-}
+module Log.Internal.Aeson.Compat
+  ( module Map
+#if !MIN_VERSION_aeson(2,0,1)
+  , KeyMap
+#endif
+  , fromText
+  , doName
+  ) where
+
+import Data.Text
+import Prelude
+
+#if MIN_VERSION_aeson(2,0,1)
+import Data.Aeson.KeyMap as Map 
+import qualified Data.Aeson.Key as K
+
+fromText :: Text -> K.Key
+fromText = K.fromText
+
+doName :: Monad m => (Text -> m Text) -> K.Key -> m K.Key
+doName f = fmap K.fromText . f . K.toText
+
+#else
+
+import Data.HashMap.Strict as Map
+
+type KeyMap a = Map.HashMap Text a
+
+fromText :: Text -> Text
+fromText = id
+
+doName :: (Text -> m Text) -> Text -> m Text
+doName = id
+
+#endif
diff --git a/src/Log/Monad.hs b/src/Log/Monad.hs
--- a/src/Log/Monad.hs
+++ b/src/Log/Monad.hs
@@ -28,11 +28,11 @@
 import Prelude
 import qualified Control.Monad.Fail as MF
 import qualified Control.Exception as E
-import qualified Data.HashMap.Strict as H
 
 import Log.Class
 import Log.Data
 import Log.Logger
+import qualified Log.Internal.Aeson.Compat as AC
 
 type InnerLogT = ReaderT LoggerEnv
 
@@ -89,7 +89,7 @@
           -- the singleton value with key reflecting its type. It's required for
           -- ElasticSearch as ES needs fields with the same name to be of the
           -- same type in all log messages.
-          Object obj      -> Object . H.union obj $ H.fromList leData
+          Object obj      -> Object . AC.union obj $ AC.fromList leData
           _ | null leData -> object [dataTyped data_ .= data_]
             | otherwise   -> object $ (dataTyped data_, data_) : leData
       }
