diff --git a/Lib/distutils/log.py b/Lib/distutils/log.py
new file mode 100644
index 0000000..f0a7865
--- /dev/null
+++ b/Lib/distutils/log.py
@@ -0,0 +1,56 @@
+"""A simple log mechanism styled after PEP 282."""
+
+# The class here is styled after PEP 282 so that it could later be
+# replaced with a standard Python logging implementation.
+
+DEBUG = 1
+INFO = 2
+WARN = 3
+ERROR = 4
+FATAL = 5
+
+class Log:
+
+    def __init__(self, threshold=WARN):
+        self.threshold = threshold
+
+    def _log(self, level, msg, args):
+        if level >= self.threshold:
+            print msg % args
+
+    def log(self, level, msg, *args):
+        self._log(level, msg, args)
+
+    def debug(self, msg, *args):
+        self._log(DEBUG, msg, args)
+    
+    def info(self, msg, *args):
+        self._log(INFO, msg, args)
+    
+    def warn(self, msg, *args):
+        self._log(WARN, msg, args)
+    
+    def error(self, msg, *args):
+        self._log(ERROR, msg, args)
+    
+    def fatal(self, msg, *args):
+        self._log(FATAL, msg, args)
+
+_global_log = Log()
+log = _global_log.log
+debug = _global_log.debug
+info = _global_log.info
+warn = _global_log.warn
+error = _global_log.error
+fatal = _global_log.fatal
+
+def set_threshold(level):
+    _global_log.threshold = level
+
+def set_verbosity(v):
+    if v == 0:
+        set_threshold(WARN)
+    if v == 1:
+        set_threshold(INFO)
+    if v == 2:
+        set_threshold(DEBUG)
