diff --git a/Lib/distutils/command/config.py b/Lib/distutils/command/config.py
index 34f9188..144c513 100644
--- a/Lib/distutils/command/config.py
+++ b/Lib/distutils/command/config.py
@@ -336,11 +336,16 @@
 
 
 def dump_file(filename, head=None):
-    if head is None:
-        print(filename + ":")
-    else:
-        print(head)
+    """Dumps a file content into log.info.
 
+    If head is not None, will be dumped before the file content.
+    """
+    if head is None:
+        log.info('%s' % filename)
+    else:
+        log.info(head)
     file = open(filename)
-    sys.stdout.write(file.read())
-    file.close()
+    try:
+        log.info(file.read())
+    finally:
+        file.close()
diff --git a/Lib/distutils/tests/test_config_cmd.py b/Lib/distutils/tests/test_config_cmd.py
new file mode 100644
index 0000000..6fd1776
--- /dev/null
+++ b/Lib/distutils/tests/test_config_cmd.py
@@ -0,0 +1,42 @@
+"""Tests for distutils.command.config."""
+import unittest
+import os
+
+from distutils.command.config import dump_file
+from distutils.tests import support
+from distutils import log
+
+class ConfigTestCase(support.LoggingSilencer,
+                     support.TempdirManager,
+                     unittest.TestCase):
+
+    def _info(self, msg):
+        for line in msg.splitlines():
+            self._logs.append(line)
+
+    def setUp(self):
+        super(ConfigTestCase, self).setUp()
+        self._logs = []
+        self.old_log = log.info
+        log.info = self._info
+
+    def tearDown(self):
+        log.info = self.old_log
+        super(ConfigTestCase, self).tearDown()
+
+    def test_dump_file(self):
+        this_file = os.path.splitext(__file__)[0] + '.py'
+        f = open(this_file)
+        try:
+            numlines = len(f.readlines())
+        finally:
+            f.close()
+
+        dump_file(this_file, 'I am the header')
+        self.assertEquals(len(self._logs), numlines+1)
+
+def test_suite():
+    return unittest.makeSuite(ConfigTestCase)
+
+if __name__ == "__main__":
+    unittest.main(defaultTest="test_suite")
