diff --git a/lib/src/logger.dart b/lib/src/logger.dart
index bb71838..a34df50 100644
--- a/lib/src/logger.dart
+++ b/lib/src/logger.dart
@@ -7,7 +7,7 @@
 /// Whether to allow fine-grain logging and configuration of loggers in a
 /// hierarchy.
 ///
-/// When false, all logging is merged in the root logger.
+/// When false, all hierarchical logging instead is merged in the root logger.
 bool hierarchicalLoggingEnabled = false;
 
 /// Automatically record stack traces for any message of this level or above.
@@ -15,11 +15,8 @@
 /// Because this is expensive, this is off by default.
 Level recordStackTraceAtLevel = Level.OFF;
 
-/// Level for the root-logger.
-///
-/// This will be the level of all loggers if [hierarchicalLoggingEnabled] is
-/// false.
-Level _rootLevel = Level.INFO;
+/// The default [Level].
+const defaultLevel = Level.INFO;
 
 /// Use a [Logger] to log debug messages.
 ///
@@ -83,7 +80,9 @@
   Logger._internal(this.name, this.parent, Map<String, Logger> children)
       : _children = children,
         children = UnmodifiableMapView(children) {
-    if (parent != null) parent._children[name] = this;
+    if (parent != null) {
+      parent._children[name] = this;
+    }
   }
 
   /// Effective level considering the levels established in this logger's
@@ -93,7 +92,7 @@
       if (_level != null) return _level;
       if (parent != null) return parent.level;
     }
-    return _rootLevel;
+    return root._level;
   }
 
   /// Override the level for this particular [Logger] and its children.
@@ -106,7 +105,7 @@
             'Please set "hierarchicalLoggingEnabled" to true if you want to '
             'change the level on a non-root logger.');
       }
-      _rootLevel = value;
+      root._level = value;
     }
   }
 
@@ -235,7 +234,7 @@
   }
 
   /// Top-level root [Logger].
-  static final Logger root = Logger('');
+  static final Logger root = Logger('').._level = defaultLevel;
 
   /// All [Logger]s in the system.
   static final Map<String, Logger> _loggers = <String, Logger>{};
diff --git a/test/logging_test.dart b/test/logging_test.dart
index b24a8a9..53fbf4e 100644
--- a/test/logging_test.dart
+++ b/test/logging_test.dart
@@ -73,6 +73,12 @@
     expect(() => Logger('.c'), throwsArgumentError);
   });
 
+  test('root level has proper defaults', () {
+    expect(Logger.root, isNotNull);
+    expect(Logger.root.parent, null);
+    expect(Logger.root.level, defaultLevel);
+  });
+
   test('logger naming is hierarchical', () {
     var c = Logger('a.b.c');
     expect(c.name, equals('c'));
