Index: log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdmin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdmin.java	(revision )
+++ log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdmin.java	(revision )
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.jmx;
+
+import javax.management.ObjectName;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Logger;
+
+/**
+ * Implementation of the root Logger MBean interface.
+ */
+public class RootLoggerAdmin implements RootLoggerAdminMBean {
+
+    private final Logger rootLogger;
+    private final ObjectName objectName;
+
+    public RootLoggerAdmin() {
+        rootLogger = (Logger) LogManager.getRootLogger();
+        try {
+            objectName = ObjectName.getInstance(
+                String.format(PATTERN, Server.escape(rootLogger.getContext().getName())));
+        } catch (final Exception e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    @Override
+    public ObjectName getObjectName() {
+        return objectName;
+    }
+
+    @Override
+    public String getLevel() {
+        return rootLogger.getLevel().name();
+    }
+
+    @Override
+    public void setLevel(final String level) {
+        rootLogger.setLevel(Level.toLevel(level));
+    }
+}
Index: log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdminMBean.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdminMBean.java	(revision )
+++ log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/RootLoggerAdminMBean.java	(revision )
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.jmx;
+
+import javax.management.ObjectName;
+
+/**
+ * The MBean interface for administering the root Logger. Each LoggerContext may have its own Logger it considers to
+ * be the root Logger. As there is no way to look up LoggerContext objects by name (other than through JMX), these
+ * MBeans will use the LoggerContext associated with the root Logger during registration.
+ */
+public interface RootLoggerAdminMBean {
+
+    /**
+     * Pattern for creating the ObjectName for this MBean.
+     */
+    String PATTERN = Server.DOMAIN + ":type=%s,component=Loggers,name=root";
+
+    /**
+     * Gets the ObjectName for this MBean.
+     *
+     * @return the ObjectName for this MBean.
+     */
+    ObjectName getObjectName();
+
+    /**
+     * Gets the name of the {@link org.apache.logging.log4j.Level} of the root Logger.
+     *
+     * @return the name of the root Logger Level.
+     */
+    String getLevel();
+
+    /**
+     * Sets the name of the {@link org.apache.logging.log4j.Level} of the root Logger.
+     *
+     * @param level the name of the corresponding Level to set the root Logger to.
+     */
+    void setLevel(String level);
+}
Index: log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java	(date 1407810145000)
+++ log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java	(revision )
@@ -160,6 +160,7 @@
                 registerLoggerConfigs(ctx, mbs, executor);
                 registerAppenders(ctx, mbs, executor);
             }
+            registerRootLoggerAdmin(mbs);
         } catch (final Exception ex) {
             LOGGER.error("Could not register mbeans", ex);
         }
@@ -187,6 +188,7 @@
         unregisterAsyncLoggerConfigRingBufferAdmins("*", mbs);
         unregisterAppenders("*", mbs);
         unregisterAsyncAppenders("*", mbs);
+        unregisterRootLoggerAdmin("*", mbs);
     }
 
     /**
@@ -238,6 +240,7 @@
         unregisterAsyncAppenders(contextName, mbs);
         unregisterAsyncLoggerRingBufferAdmins(contextName, mbs);
         unregisterAsyncLoggerConfigRingBufferAdmins(contextName, mbs);
+        unregisterRootLoggerAdmin(contextName, mbs);
     }
 
     private static void registerStatusLogger(final String contextName, final MBeanServer mbs, final Executor executor)
@@ -301,6 +304,16 @@
         final String pattern2 = RingBufferAdminMBean.PATTERN_ASYNC_LOGGER_CONFIG;
         final String search2 = String.format(pattern2, escape(contextName), "*");
         unregisterAllMatching(search2, mbs);
+    }
+
+    private static void registerRootLoggerAdmin(final MBeanServer mbs)
+        throws NotCompliantMBeanException, InstanceAlreadyExistsException, MBeanRegistrationException {
+        final RootLoggerAdminMBean bean = new RootLoggerAdmin();
+        register(mbs, bean, bean.getObjectName());
+    }
+
+    private static void unregisterRootLoggerAdmin(final String contextName, final MBeanServer mbs) {
+        unregisterAllMatching(String.format(RootLoggerAdminMBean.PATTERN, contextName), mbs);
     }
 
     private static void unregisterAllMatching(final String search, final MBeanServer mbs) {
