diff -up ./sos/plugintools.py.orig ./sos/plugintools.py
--- ./sos/plugintools.py.orig	2012-03-06 21:26:16.048149609 +0000
+++ ./sos/plugintools.py	2012-03-06 21:26:22.901149765 +0000
@@ -67,8 +67,8 @@ class PluginBase:
 
         self.must_exit = False
 
-        self.soslog = logging.getLogger('sos')
-        self.proflog = logging.getLogger('sosprofile')
+        self.soslog = self.cInfo['soslog']
+        self.proflog = self.cInfo['proflog']
 
         # get the option list into a dictionary
         for opt in self.optionList:
@@ -105,7 +105,7 @@ class PluginBase:
                     except KeyboardInterrupt:
                       raise KeyboardInterrupt
                     except Exception, e:
-                        # self.soslog.debug("problem at path %s (%s)" % (abspath,e))
+                        self.soslog.info("could not apply regex substitution at path %s (%s)" % (abspath,e))
                         break
         return False
 
@@ -137,7 +137,7 @@ class PluginBase:
             return ''
 
         if not os.path.exists(srcpath):
-            # self.soslog.debug("file or directory %s does not exist" % srcpath)
+            self.soslog.info("file or directory %s does not exist" % srcpath)
             return
 
         if os.path.islink(srcpath):
@@ -162,19 +162,19 @@ class PluginBase:
 
             # make sure the link doesn't already exists
             if os.path.exists(dstslname):
-                # self.soslog.debug("skipping symlink creation: already exists (%s)" % dstslname)
+                self.soslog.info("skipping symlink creation: already exists (%s)" % dstslname)
                 return
 
             # make sure the dst dir exists
             if not (os.path.exists(os.path.dirname(dstslname)) and os.path.isdir(os.path.dirname(dstslname))):
                 os.makedirs(os.path.dirname(dstslname))
 
-            # self.soslog.debug("creating symlink %s -> %s" % (dstslname, rpth))
+            self.soslog.debug("creating symlink %s -> %s" % (dstslname, rpth))
 
             try:
                 os.symlink(rpth, dstslname)
             except OSError:
-                # self.soslog.debug("skipping symlink creation: already exists (%s)" % dstslname)
+                self.soslog.info("skipping symlink creation: already exists (%s)" % dstslname)
                 return
             if os.path.isabs(link):
                 self.doCopyFileOrDir(link)
@@ -195,17 +195,17 @@ class PluginBase:
 
         # if we get here, it's definitely a regular file (not a symlink or dir)
 
-        # self.soslog.debug("copying file %s" % srcpath)
+        self.soslog.debug("copying file %s" % srcpath)
         try:
             tdstpath, abspath = self.__copyFile(srcpath)
-        except EnvironmentError:
-            # self.soslog.debug("error copying file %s (already exists)" % (srcpath))
+        except PluginException:
+            self.soslog.debug("error copying file %s (already exists)" % (srcpath))
             return
         except IOError:
-            # self.soslog.debug("error copying file %s (IOError)" % (srcpath))
+            self.soslog.info("error copying file %s (IOError)" % (srcpath))
             return 
         except:
-            # self.soslog.debug("error copying file %s (SOMETHING HAPPENED)" % (srcpath))
+            self.soslog.exception("error copying file %s" % (srcpath))
             return 
 
         self.copiedFiles.append({'srcpath':srcpath, 'dstpath':tdstpath, 'symlink':"no"}) # save in our list
@@ -285,7 +285,7 @@ class PluginBase:
         """Add a file specification (with limits)
         """
         if not ( fname and len(fname) ):
-            # self.soslog.warning("invalid file path")
+            self.soslog.warning("invalid file path")
             return False
         files = glob.glob(fname)
         files.sort()
@@ -309,7 +309,7 @@ class PluginBase:
         copied into the sosreport by this module
         """
         if not ( copyspec and len(copyspec) ):
-            # self.soslog.warning("invalid file path")
+            self.soslog.warning("invalid file path")
             return False
         # Glob case handling is such that a valid non-glob is a reduced glob
         for filespec in glob.glob(copyspec):
@@ -399,7 +399,7 @@ class PluginBase:
             outfn_strip = outfn[len(self.cInfo['cmddir'])+1:]
 
         else:
-            # self.soslog.debug("could not run command: %s" % exe)
+            self.soslog.info("could not run command: %s" % exe)
             outfn = None
             outfn_strip = None
 
@@ -463,11 +463,11 @@ class PluginBase:
 
         for progs in izip(self.collectProgs):
             prog, suggest_filename, root_symlink, timeout = progs[0]
-            # self.soslog.debug("collecting output of '%s'" % prog)
+            self.soslog.debug("collecting output of '%s'" % prog)
             try:
                 self.collectOutputNow(prog, suggest_filename, root_symlink, timeout)
             except Exception, e:
-                self.soslog.debug("error collection output of '%s', traceback follows:" % prog)
+                self.soslog.info("error collection output of '%s', traceback follows:" % prog)
 
     def exit_please(self):
         """ This function tells the plugin that it should exit ASAP"""
diff -up ./sos/sosreport.py.orig ./sos/sosreport.py
--- ./sos/sosreport.py.orig	2012-03-06 21:26:16.051149609 +0000
+++ ./sos/sosreport.py	2012-03-06 21:26:22.902149765 +0000
@@ -361,17 +361,16 @@ def sosreport(opts):
     soslog = logging.getLogger('sos')
     soslog.setLevel(logging.DEBUG)
 
-    logging.VERBOSE  = logging.INFO - 1
-    logging.VERBOSE2 = logging.INFO - 2
-    logging.VERBOSE3 = logging.INFO - 3
-    logging.addLevelName(logging.VERBOSE, "verbose")
-    logging.addLevelName(logging.VERBOSE2,"verbose2")
-    logging.addLevelName(logging.VERBOSE3,"verbose3")
-
     if GlobalVars.__cmdLineOpts__.profiler:
         proflog = logging.getLogger('sosprofile')
         proflog.setLevel(logging.DEBUG)
-        
+    else:
+        proflog = None
+
+    # limit verbosity to DEBUG
+    if GlobalVars.__cmdLineOpts__.verbosity > 3:
+        GlobalVars.__cmdLineOpts__.verbosity = 3 
+
     # if stdin is not a tty, disable colors and don't ask questions
     if not sys.stdin.isatty():
         GlobalVars.__cmdLineOpts__.nocolors = True
@@ -380,7 +379,11 @@ def sosreport(opts):
     # log to a file
     flog = logging.FileHandler(logdir + "/sos.log")
     flog.setFormatter(logging.Formatter('%(asctime)s %(levelname)s: %(message)s'))
-    flog.setLevel(logging.VERBOSE3)
+    if GlobalVars.__cmdLineOpts__.verbosity > 0:
+        # standard log levels have a step of 10
+        flog.setLevel(logging.INFO - (GlobalVars.__cmdLineOpts__.verbosity * 10))
+    else:
+        flog.setLevel(logging.INFO)
     soslog.addHandler(flog)
 
     if GlobalVars.__cmdLineOpts__.profiler:
@@ -393,9 +396,10 @@ def sosreport(opts):
     # define a Handler which writes INFO messages or higher to the sys.stderr
     console = logging.StreamHandler(sys.stderr)
     if GlobalVars.__cmdLineOpts__.verbosity > 0:
-        console.setLevel(20 - GlobalVars.__cmdLineOpts__.verbosity)
+        # standard log levels have a step of 10
+        console.setLevel(logging.WARNING - (GlobalVars.__cmdLineOpts__.verbosity * 10))
     else:
-        console.setLevel(logging.INFO)
+        console.setLevel(logging.WARNING)
     console.setFormatter(logging.Formatter('%(message)s'))
     soslog.addHandler(console)
 
@@ -403,7 +407,7 @@ def sosreport(opts):
 
     # set up dict so everyone can share the following
     commons = {'dstroot': GlobalVars.dstroot, 'cmddir': cmddir, 'logdir': logdir, 'rptdir': rptdir,
-               'soslog': soslog, 'policy': GlobalVars.policy, 'verbosity' : GlobalVars.__cmdLineOpts__.verbosity,
+               'soslog': soslog, 'proflog': proflog, 'policy': GlobalVars.policy, 'verbosity' : GlobalVars.__cmdLineOpts__.verbosity,
                'xmlreport' : xmlrep, 'cmdlineopts':GlobalVars.__cmdLineOpts__, 'config':config }
 
     # Make policy aware of the commons