diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst
index 5d62d50..c0e114441 100644
--- a/Doc/library/logging.rst
+++ b/Doc/library/logging.rst
@@ -2599,8 +2599,8 @@
    .. method:: flush()
 
       For a :class:`MemoryHandler`, flushing means just sending the buffered
-      records to the target, if there is one. Override if you want different
-      behavior.
+      records to the target, if there is one. The buffer is also cleared when
+      this happens. Override if you want different behavior.
 
 
    .. method:: setTarget(target)
@@ -2972,15 +2972,18 @@
     'extra'. The return value is a (*msg*, *kwargs*) tuple which has the
     (possibly modified) versions of the arguments passed in.
 
-In addition to the above, :class:`LoggerAdapter` supports all the logging
+In addition to the above, :class:`LoggerAdapter` supports the following
 methods of :class:`Logger`, i.e. :meth:`debug`, :meth:`info`, :meth:`warning`,
-:meth:`error`, :meth:`exception`, :meth:`critical` and :meth:`log`. These
-methods have the same signatures as their counterparts in :class:`Logger`, so
-you can use the two types of instances interchangeably.
+:meth:`error`, :meth:`exception`, :meth:`critical`, :meth:`log`,
+:meth:`isEnabledFor`, :meth:`getEffectiveLevel`, :meth:`setLevel`,
+:meth:`hasHandlers`. These methods have the same signatures as their
+counterparts in :class:`Logger`, so you can use the two types of instances
+interchangeably.
 
 .. versionchanged:: 3.2
-   The :meth:`isEnabledFor` method was added to :class:`LoggerAdapter`.  This
-   method delegates to the underlying logger.
+   The :meth:`isEnabledFor`, :meth:`getEffectiveLevel`, :meth:`setLevel` and
+   :meth:`hasHandlers` methods were added to :class:`LoggerAdapter`.  These
+   methods delegate to the underlying logger.
 
 
 Thread Safety
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 42b957c..b7086d5 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -1400,6 +1400,8 @@
         msg, kwargs = self.process(msg, kwargs)
         self.logger.warning(msg, *args, **kwargs)
 
+    warn = warning
+
     def error(self, msg, *args, **kwargs):
         """
         Delegate an error call to the underlying logger, after adding
@@ -1433,12 +1435,24 @@
         msg, kwargs = self.process(msg, kwargs)
         self.logger.log(level, msg, *args, **kwargs)
 
+    def setLevel(self, level):
+        """
+        Set the specified level on the underlying logger.
+        """
+        self.logger.setLevel(level)
+
     def isEnabledFor(self, level):
         """
         See if the underlying logger is enabled for the specified level.
         """
         return self.logger.isEnabledFor(level)
 
+    def getEffectiveLevel(self):
+        """
+        Get the effective level for the underlying logger.
+        """
+        return self.logger.getEffectiveLevel()
+
     def hasHandlers(self):
         """
         See if the underlying logger has any handlers.
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 744f59b..ce0673d 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -1131,6 +1131,8 @@
         For a MemoryHandler, flushing means just sending the buffered
         records to the target, if there is one. Override if you want
         different behaviour.
+
+        The record buffer is also cleared by this operation.
         """
         if self.target:
             for record in self.buffer:
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 7506dba..c5d8bac 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -154,7 +154,7 @@
 
         ERR = logging.getLogger("ERR")
         ERR.setLevel(logging.ERROR)
-        INF = logging.getLogger("INF")
+        INF = logging.LoggerAdapter(logging.getLogger("INF"), {})
         INF.setLevel(logging.INFO)
         DEB = logging.getLogger("DEB")
         DEB.setLevel(logging.DEBUG)
diff --git a/Misc/NEWS b/Misc/NEWS
index 9ac3e0d..cd93537 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -58,6 +58,10 @@
 Library
 -------
 
+- logging: hasHandlers method was added to Logger, and isEnabledFor,
+  getEffectiveLevel, hasHandlers and setLevel were added to LoggerAdapter.
+  LoggerAdapter was introduced into the unit tests for logging.
+
 - Issue #1686: Fix string.Template when overriding the pattern attribute.
 
 - Issue #9854: SocketIO objects now observe the RawIOBase interface in
