diff --git a/Network/HTTP2/TLS/Client/Settings.hs b/Network/HTTP2/TLS/Client/Settings.hs
--- a/Network/HTTP2/TLS/Client/Settings.hs
+++ b/Network/HTTP2/TLS/Client/Settings.hs
@@ -14,6 +14,7 @@
     SessionData,
     SessionID,
     SessionManager,
+    defaultKeyLogger,
     noSessionManager,
  )
 
@@ -118,7 +119,7 @@
 defaultSettings :: Settings
 defaultSettings =
     Settings
-        { settingsKeyLogger = \_ -> return ()
+        { settingsKeyLogger = defaultKeyLogger
         , settingsValidateCert = True
         , settingsCAStore = mempty
         , settingsServerNameOverride = Nothing
diff --git a/Network/HTTP2/TLS/Server/Settings.hs b/Network/HTTP2/TLS/Server/Settings.hs
--- a/Network/HTTP2/TLS/Server/Settings.hs
+++ b/Network/HTTP2/TLS/Server/Settings.hs
@@ -1,7 +1,7 @@
 module Network.HTTP2.TLS.Server.Settings where
 
 import Network.Control
-import Network.TLS (SessionManager, noSessionManager)
+import Network.TLS (SessionManager, defaultKeyLogger, noSessionManager)
 
 -- Server settings type.
 data Settings = Settings
@@ -98,7 +98,7 @@
         , settingsSlowlorisSize = 50
         , settingsReadBufferSize = 16384
         , settingsReadBufferLowerLimit = 2048
-        , settingsKeyLogger = \_ -> return ()
+        , settingsKeyLogger = defaultKeyLogger
         , settingsNumberOfWorkers = 8 -- dummy
         , settingsConcurrentStreams = defaultMaxStreams
         , settingsStreamWindowSize = defaultMaxStreamData
diff --git a/http2-tls.cabal b/http2-tls.cabal
--- a/http2-tls.cabal
+++ b/http2-tls.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          http2-tls
-version:       0.4.5
+version:       0.4.6
 license:       BSD3
 license-file:  LICENSE
 maintainer:    Kazu Yamamoto <kazu@iij.ad.jp>
@@ -46,7 +46,7 @@
         network-run >=0.4 && <0.5,
         recv >=0.1.0 && <0.2,
         time-manager >=0.2 && <0.3,
-        tls >=2.1.4 && <2.2,
+        tls >=2.1.10 && <2.2,
         utf8-string >=1.0 && <1.1
 
 executable h2-client
diff --git a/util/h2-client.hs b/util/h2-client.hs
--- a/util/h2-client.hs
+++ b/util/h2-client.hs
@@ -87,9 +87,9 @@
         h : p : [] -> return (h, read p, ["/"])
         h : p : ps -> return (h, read p, C8.pack <$> ps)
     ref <- newIORef Nothing
-    let keylog msg = case optKeyLogFile of
-            Nothing -> return ()
-            Just file -> appendFile file (msg ++ "\n")
+    let keylog = case optKeyLogFile of
+            Nothing -> settingsKeyLogger defaultSettings
+            Just file -> \msg -> appendFile file (msg ++ "\n")
         settings =
             defaultSettings
                 { settingsValidateCert = optValidate
diff --git a/util/h2-server.hs b/util/h2-server.hs
--- a/util/h2-server.hs
+++ b/util/h2-server.hs
@@ -71,9 +71,9 @@
         _ -> showUsageAndExit usage
     Right cred@(!_cc, !_priv) <- credentialLoadX509 optCertFile optKeyFile
     sm <- newSessionTicketManager defaultConfig
-    let keylog msg = case optKeyLogFile of
-            Nothing -> return ()
-            Just file -> appendFile file (msg ++ "\n")
+    let keylog = case optKeyLogFile of
+            Nothing -> settingsKeyLogger defaultSettings
+            Just file -> \msg -> appendFile file (msg ++ "\n")
         settings =
             defaultSettings
                 { settingsKeyLogger = keylog
