Index: src/sas/sascalc/calculator/resolution_calculator.py
===================================================================
--- src/sas/sascalc/calculator/resolution_calculator.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/calculator/resolution_calculator.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -15,4 +15,6 @@
 import sys
 import logging
+
+logger = logging.getLogger()
 
 #Plank's constant in cgs unit
@@ -1006,5 +1008,5 @@
             detector_offset = self.sample2detector_distance[1]
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         # detector size in [no of pix_x,no of pix_y]
@@ -1093,5 +1095,5 @@
             output.qy_data = qy_value
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         return output
Index: src/sas/sascalc/calculator/sas_gen.py
===================================================================
--- src/sas/sascalc/calculator/sas_gen.py	(revision d2fd8fc62a44e402ef17815b5b0bf932d5332ff0)
+++ src/sas/sascalc/calculator/sas_gen.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -12,4 +12,6 @@
 import sys
 import logging
+
+logger = logging.getLogger()
 
 MFACTOR_AM = 2.853E-12
@@ -285,5 +287,5 @@
                 mask = (x_dir2 + y_dir2 + z_dir2) <= 1.0
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
         self.output = MagSLD(self.pos_x[mask], self.pos_y[mask],
                              self.pos_z[mask], self.sld_n[mask],
@@ -394,5 +396,5 @@
                 except:
                     # Skip non-data lines
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
                 #Reading Header; Segment count ignored
                 s_line = line.split(":", 1)
@@ -589,5 +591,5 @@
                         z_lines.append(z_line)
                 except:
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
 
             output = MagSLD(pos_x, pos_y, pos_z, sld_n, sld_mx, sld_my, sld_mz)
@@ -683,5 +685,5 @@
                     except:
                         # Skip non-data lines
-                        logging.error(sys.exc_value)
+                        logger.error(sys.exc_value)
             output = MagSLD(pos_x, pos_y, pos_z, sld_n,
                             sld_mx, sld_my, sld_mz)
Index: src/sas/sascalc/data_util/calcthread.py
===================================================================
--- src/sas/sascalc/data_util/calcthread.py	(revision 0de74afcaf1a275ffd2e71099f9e17e398dcc39a)
+++ src/sas/sascalc/data_util/calcthread.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -8,4 +8,5 @@
 import traceback
 import sys
+import logging
 
 if sys.platform.count("darwin") > 0:
@@ -21,4 +22,6 @@
     from time import clock
     from time import sleep
+
+logger = logging.getLogger()
 
 
@@ -244,5 +247,5 @@
                 pass
         import logging
-        logging.error(traceback.format_exc())
+        logger.error(traceback.format_exc())
         #print 'CalcThread exception',
 
Index: src/sas/sascalc/dataloader/loader.py
===================================================================
--- src/sas/sascalc/dataloader/loader.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/dataloader/loader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -32,4 +32,6 @@
 from readers import cansas_reader
 
+logger = logging.getLogger()
+
 class Registry(ExtensionRegistry):
     """
@@ -99,5 +101,5 @@
             msg = "DataLoader couldn't locate DataLoader plugin folder."
             msg += """ "%s" does not exist""" % dir
-            logging.warning(msg)
+            logger.warning(msg)
             return readers_found
 
@@ -117,5 +119,5 @@
                         msg = "Loader: Error importing "
                         msg += "%s\n  %s" % (item, sys.exc_value)
-                        logging.error(msg)
+                        logger.error(msg)
 
                 # Process zip files
@@ -139,10 +141,10 @@
                                 msg = "Loader: Error importing"
                                 msg += " %s\n  %s" % (mfile, sys.exc_value)
-                                logging.error(msg)
+                                logger.error(msg)
 
                     except:
                         msg = "Loader: Error importing "
                         msg += " %s\n  %s" % (item, sys.exc_value)
-                        logging.error(msg)
+                        logger.error(msg)
 
         return readers_found
@@ -190,5 +192,5 @@
                 msg = "Loader: Error accessing"
                 msg += " Reader in %s\n  %s" % (module.__name__, sys.exc_value)
-                logging.error(msg)
+                logger.error(msg)
         return reader_found
 
@@ -223,5 +225,5 @@
             msg = "Loader: Error accessing Reader "
             msg += "in %s\n  %s" % (loader.__name__, sys.exc_value)
-            logging.error(msg)
+            logger.error(msg)
         return reader_found
 
@@ -268,5 +270,5 @@
                 msg = "Loader: Error accessing Reader"
                 msg += " in %s\n  %s" % (module.__name__, sys.exc_value)
-                logging.error(msg)
+                logger.error(msg)
         return reader_found
 
Index: src/sas/sascalc/dataloader/readers/associations.py
===================================================================
--- src/sas/sascalc/dataloader/readers/associations.py	(revision e5c09cfdceff8c0c11f340ea2e16c5ebfed5a2a9)
+++ src/sas/sascalc/dataloader/readers/associations.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -18,4 +18,6 @@
 import logging
 import json
+
+logger = logging.getLogger()
 
 FILE_NAME = 'defaults.json'
@@ -67,5 +69,5 @@
                     msg = "read_associations: skipping association"
                     msg += " for %s\n  %s" % (ext.lower(), sys.exc_value)
-                    logging.error(msg)
+                    logger.error(msg)
     else:
         print "Could not find reader association settings\n  %s [%s]" % (__file__, os.getcwd())
@@ -81,5 +83,5 @@
     :param registry_function: function to be called to register each reader
     """
-    logging.info("register_readers is now obsolete: use read_associations()")
+    logger.info("register_readers is now obsolete: use read_associations()")
     import abs_reader
     import ascii_reader
Index: src/sas/sascalc/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision 8434365120d0b226f06367f64c21b3bc835e1db5)
+++ src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -33,4 +33,6 @@
 import xml.dom.minidom
 from xml.dom.minidom import parseString
+
+logger = logging.getLogger()
 
 PREPROCESS = "xmlpreprocess"
@@ -1471,5 +1473,5 @@
                             self.errors.add(err_mess)
                             if optional:
-                                logging.info(err_mess)
+                                logger.info(err_mess)
                             else:
                                 raise ValueError, err_mess
@@ -1480,5 +1482,5 @@
                         self.errors.add(err_mess)
                         if optional:
-                            logging.info(err_mess)
+                            logger.info(err_mess)
                         else:
                             raise ValueError, err_mess
Index: src/sas/sascalc/dataloader/readers/danse_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/danse_reader.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/dataloader/readers/danse_reader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -19,4 +19,6 @@
 from sas.sascalc.dataloader.data_info import Data2D, Detector
 from sas.sascalc.dataloader.manipulations import reader2D_converter
+
+logger = logging.getLogger()
 
 # Look for unit converter
@@ -142,5 +144,5 @@
                             error.append(err)
                         except:
-                            logging.info("Skipping line:%s,%s" %(data_str,
+                            logger.info("Skipping line:%s,%s" %(data_str,
                                                                 sys.exc_value))
             
@@ -196,5 +198,5 @@
                     msg = "Skipping entry (v1.0):%s,%s" % (str(data[i_pt]),
                                                            sys.exc_value)
-                    logging.info(msg)
+                    logger.info(msg)
                 
                 # Get bin number
@@ -271,5 +273,5 @@
                 raise ValueError, msg
             else:
-                logging.info("Danse_reader Reading %s \n" % filename)
+                logger.info("Danse_reader Reading %s \n" % filename)
             
             # Store loading process information
Index: src/sas/sascalc/dataloader/readers/tiff_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/tiff_reader.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/dataloader/readers/tiff_reader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -16,5 +16,7 @@
 from sas.sascalc.dataloader.data_info import Data2D
 from sas.sascalc.dataloader.manipulations import reader2D_converter
-    
+
+logger = logging.getLogger()
+
 class Reader:
     """
@@ -76,5 +78,5 @@
                 value = float(val)
             except:
-                logging.error("tiff_reader: had to skip a non-float point")
+                logger.error("tiff_reader: had to skip a non-float point")
                 continue
             
Index: src/sas/sascalc/dataloader/readers/xml_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/xml_reader.py	(revision a235f71571822c52f74fd1221fcd542805cf1277)
+++ src/sas/sascalc/dataloader/readers/xml_reader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -18,4 +18,6 @@
 from lxml import etree
 from lxml.builder import E
+
+logger = logging.getLogger()
 
 PARSER = etree.ETCompatXMLParser(remove_comments=True, remove_pis=False)
@@ -71,5 +73,5 @@
             self.xmlroot = self.xmldoc.getroot()
         except etree.XMLSyntaxError as xml_error:
-            logging.info(xml_error)
+            logger.info(xml_error)
         except Exception:
             self.xml = None
@@ -88,5 +90,5 @@
             self.xmlroot = etree.fromstring(tag_soup)
         except etree.XMLSyntaxError as xml_error:
-            logging.info(xml_error)
+            logger.info(xml_error)
         except Exception:
             self.xml = None
@@ -102,5 +104,5 @@
             self.schemadoc = etree.parse(self.schema, parser=PARSER)
         except etree.XMLSyntaxError as xml_error:
-            logging.info(xml_error)
+            logger.info(xml_error)
         except Exception:
             self.schema = None
Index: src/sas/sascalc/pr/invertor.py
===================================================================
--- src/sas/sascalc/pr/invertor.py	(revision 2c60f30436c786afaf7a16a8d82389832d5c6637)
+++ src/sas/sascalc/pr/invertor.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -18,4 +18,6 @@
 from scipy import optimize
 from sas.sascalc.pr.core.pr_inversion import Cinvertor
+
+logger = logging.getLogger()
 
 def help():
@@ -495,5 +497,5 @@
             # We were not able to estimate the errors
             # Return an empty error matrix
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         # Keep a copy of the last output
@@ -541,5 +543,5 @@
             # number of terms
             best_alpha, _, _ = self.estimate_alpha(self.nfunc)
-            logging.warning("Invertor.estimate_numterms: %s" % sys.exc_value)
+            logger.warning("Invertor.estimate_numterms: %s" % sys.exc_value)
             return self.nfunc, best_alpha, "Could not estimate number of terms"
 
Index: src/sas/sascalc/pr/num_term.py
===================================================================
--- src/sas/sascalc/pr/num_term.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/pr/num_term.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -5,4 +5,6 @@
 import logging
 from sas.sascalc.pr.invertor import Invertor
+
+logger = logging.getLogger()
 
 class NTermEstimator(object):
@@ -180,5 +182,5 @@
                 data_err = numpy.append(data_err, err)
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
     return data_x, data_y, data_err
Index: src/sas/sasgui/guiframe/CategoryInstaller.py
===================================================================
--- src/sas/sasgui/guiframe/CategoryInstaller.py	(revision ddbac6633a1e7ec42b99bb39f46b9889ccf26084)
+++ src/sas/sasgui/guiframe/CategoryInstaller.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -16,4 +16,6 @@
 
 USER_FILE = 'categories.json'
+
+logger = logging.getLogger()
 
 class CategoryInstaller:
@@ -114,5 +116,5 @@
     @staticmethod
     def get_default_file():
-        logging.warning("CategoryInstaller.get_default_file is deprecated.")
+        logger.warning("CategoryInstaller.get_default_file is deprecated.")
 
     @staticmethod
@@ -153,5 +155,5 @@
                         model_enabled_dict.pop(model_name)
                     except:
-                        logging.error("CategoryInstaller: %s", sys.exc_value)
+                        logger.error("CategoryInstaller: %s", sys.exc_value)
                 else:
                     add_list.remove(model_name)
Index: src/sas/sasgui/guiframe/CategoryManager.py
===================================================================
--- src/sas/sasgui/guiframe/CategoryManager.py	(revision 212bfc297ca102b648c949f030d3d06a4c569fa3)
+++ src/sas/sasgui/guiframe/CategoryManager.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -20,4 +20,6 @@
 from sas.sasgui.guiframe.CategoryInstaller import CategoryInstaller
 IS_MAC = (sys.platform == 'darwin')
+
+logger = logging.getLogger()
 
 """ Notes
@@ -373,5 +375,5 @@
                     self.master_category_dict = json.load(f)
         except IOError:
-            logging.error('Problem reading in category file.')
+            logger.error('Problem reading in category file.')
 
         self._regenerate_model_dict()
Index: src/sas/sasgui/guiframe/config.py
===================================================================
--- src/sas/sasgui/guiframe/config.py	(revision f9d1f609ce36aae44396ad86ba1db9146a4234b3)
+++ src/sas/sasgui/guiframe/config.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -7,4 +7,8 @@
 import sas.sasview
 import logging
+
+
+logger = logging.getLogger()
+
 
 # Version of the application
@@ -57,5 +61,5 @@
 
 icon_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "images"))
-logging.info("icon path: %s" % icon_path)
+logger.info("icon path: %s" % icon_path)
 media_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "media"))
 test_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test"))
Index: src/sas/sasgui/guiframe/data_manager.py
===================================================================
--- src/sas/sasgui/guiframe/data_manager.py	(revision 2ffe241a82548f1c3017267ebe33cb91ce512e31)
+++ src/sas/sasgui/guiframe/data_manager.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -25,4 +25,6 @@
 from sas.sasgui.guiframe.dataFitting import Data2D
 import time
+
+logger = logging.getLogger()
 
 class DataManager(object):
@@ -136,5 +138,5 @@
                 msg = "Data manager already stores %s" % str(data.name)
                 msg += ""
-                logging.info(msg)
+                logger.info(msg)
                 data_state = self.stored_data[id]
                 data_state.data = data
Index: src/sas/sasgui/guiframe/documentation_window.py
===================================================================
--- src/sas/sasgui/guiframe/documentation_window.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/documentation_window.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -20,4 +20,6 @@
 import urllib
 import sys
+
+logger = logging.getLogger()
 
 SPHINX_DOC_ENV = "SASVIEW_DOC_PATH"
@@ -71,5 +73,5 @@
 
         if not os.path.exists(file_path):
-            logging.error("Could not find Sphinx documentation at %s \
+            logger.error("Could not find Sphinx documentation at %s \
             -- has it been built?", file_path)
         elif WX_SUPPORTS_HTML2:
@@ -79,5 +81,5 @@
             self.Show()
         else:
-            logging.error("No html2 support, popping up a web browser")
+            logger.error("No html2 support, popping up a web browser")
             #For cases that do not build against current version dependency
             # Wx 3.0 we provide a webbrowser call - this is particularly for
Index: src/sas/sasgui/guiframe/gui_manager.py
===================================================================
--- src/sas/sasgui/guiframe/gui_manager.py	(revision 73cbeec4f3f2dfd3c530e5782984529dc2c133b2)
+++ src/sas/sasgui/guiframe/gui_manager.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -48,4 +48,6 @@
 from matplotlib import _pylab_helpers
 
+logger = logging.getLogger()
+
 warnings.simplefilter("ignore")
 
@@ -64,10 +66,10 @@
     if os.path.isfile(os.path.join(app_path, "custom_config.py")):
         app_path = os.path.abspath(app_path)
-        logging.info("Using application path: %s", app_path)
+        logger.info("Using application path: %s", app_path)
         return app_path
 
     # Next, try the current working directory
     if os.path.isfile(os.path.join(os.getcwd(), "custom_config.py")):
-        logging.info("Using application path: %s", os.getcwd())
+        logger.info("Using application path: %s", os.getcwd())
         return os.path.abspath(os.getcwd())
 
@@ -76,9 +78,9 @@
     # clean all these module variables and put them into a config class
     # that can be passed by sasview.py.
-    logging.info(sys.executable)
-    logging.info(str(sys.argv))
+    logger.info(sys.executable)
+    logger.info(str(sys.argv))
     from sas import sasview as sasview
     app_path = os.path.dirname(sasview.__file__)
-    logging.info("Using application path: %s", app_path)
+    logger.info("Using application path: %s", app_path)
     return app_path
 
@@ -104,9 +106,9 @@
         config_module = imp.load_module(file, fObj, path_config, descr)
     except:
-        logging.error("Error loading %s/%s: %s" % (path, file, sys.exc_value))
+        logger.error("Error loading %s/%s: %s" % (path, file, sys.exc_value))
     finally:
         if fObj is not None:
             fObj.close()
-    logging.info("GuiManager loaded %s/%s" % (path, file))
+    logger.info("GuiManager loaded %s/%s" % (path, file))
     return config_module
 
@@ -125,9 +127,9 @@
         # Didn't find local config, load the default
         import sas.sasgui.guiframe.config as config
-        logging.info("using default local_config")
+        logger.info("using default local_config")
     else:
-        logging.info("found local_config in %s" % os.getcwd())
+        logger.info("found local_config in %s" % os.getcwd())
 else:
-    logging.info("found local_config in %s" % PATH_APP)
+    logger.info("found local_config in %s" % PATH_APP)
 
 from sas.sasgui.guiframe.customdir import SetupCustom
@@ -138,9 +140,9 @@
     if custom_config is None:
         msgConfig = "Custom_config file was not imported"
-        logging.info(msgConfig)
+        logger.info(msgConfig)
     else:
-        logging.info("using custom_config in %s" % os.getcwd())
+        logger.info("using custom_config in %s" % os.getcwd())
 else:
-    logging.info("using custom_config from %s" % c_conf_dir)
+    logger.info("using custom_config from %s" % c_conf_dir)
 
 # read some constants from config
@@ -374,5 +376,5 @@
                     frame.SetIcon(icon)
                 except:
-                    logging.error("ViewerFrame.put_icon: could not set icon")
+                    logger.error("ViewerFrame.put_icon: could not set icon")
 
     def get_client_size(self):
@@ -803,5 +805,5 @@
                                                 str(self._input_file))
             msg += str(sys.exc_value) + '\n'
-            logging.error(msg)
+            logger.error(msg)
         if self._data_panel is not None and len(self.plugins) > 0:
             self._data_panel.fill_cbox_analysis(self.plugins)
@@ -869,10 +871,10 @@
             if plugin.__class__ == item.__class__:
                 msg = "Plugin %s already loaded" % plugin.sub_menu
-                logging.info(msg)
+                logger.info(msg)
                 is_loaded = True
         if not is_loaded:
             self.plugins.append(plugin)
             msg = "Plugin %s appended" % plugin.sub_menu
-            logging.info(msg)
+            logger.info(msg)
 
     def _get_local_plugins(self):
@@ -894,5 +896,5 @@
                 msg = "ViewerFrame._get_local_plugins:"
                 msg += "cannot import dataloader plugin.\n %s" % sys.exc_value
-                logging.error(msg)
+                logger.error(msg)
         if style2 == GUIFRAME.PLOTTING_ON:
             try:
@@ -904,5 +906,5 @@
                 msg = "ViewerFrame._get_local_plugins:"
                 msg += "cannot import plotting plugin.\n %s" % sys.exc_value
-                logging.error(msg)
+                logger.error(msg)
 
         return plugins
@@ -949,5 +951,5 @@
                                 plugins.append(module.Plugin())
                                 msg = "Found plug-in: %s" % module.PLUGIN_ID
-                                logging.info(msg)
+                                logger.info(msg)
                             except:
                                 msg = "Error accessing PluginPanel"
@@ -956,5 +958,5 @@
                     except:
                         msg = "ViewerFrame._find_plugins: %s" % sys.exc_value
-                        logging.error(msg)
+                        logger.error(msg)
                     finally:
                         if file is not None:
@@ -963,5 +965,5 @@
             # Should raise and catch at a higher level and
             # display error on status bar
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         return plugins
@@ -1385,5 +1387,5 @@
 
         if config._do_aboutbox:
-            logging.info("Doing help menu")
+            logger.info("Doing help menu")
             wx_id = wx.NewId()
             self._help_menu.Append(wx_id, '&About', 'Software information')
@@ -1746,5 +1748,5 @@
                 del self.panels[ID]
         else:
-            logging.error("delete_panel: No such plot id as %s" % ID)
+            logger.error("delete_panel: No such plot id as %s" % ID)
 
     def create_gui_data(self, data, path=None):
@@ -1763,5 +1765,5 @@
             log_msg += "load: %s\n" % str(basename)
             log_msg += "Try Data opening...."
-            logging.error(log_msg)
+            logger.error(log_msg)
             return
 
@@ -1843,5 +1845,5 @@
             log_msg += "load: %s\n" % str(path)
             log_msg += "Try File opening ...."
-            logging.error(log_msg)
+            logger.error(log_msg)
             return
         log_msg = ''
@@ -1849,5 +1851,5 @@
         error_message = ""
         try:
-            logging.info("Loading Data...:\n" + str(path) + "\n")
+            logger.info("Loading Data...:\n" + str(path) + "\n")
             temp = self.loader.load(path)
             if temp.__class__.__name__ == "list":
@@ -1864,5 +1866,5 @@
             error_message += " Data from cmd:\n %s\n" % str(path)
             error_message += str(sys.exc_value) + "\n"
-            logging.error(error_message)
+            logger.error(error_message)
 
     def load_folder(self, path):
@@ -1885,5 +1887,5 @@
             error_message += " Data folder from cmd:\n %s\n" % str(path)
             error_message += str(sys.exc_value) + "\n"
-            logging.error(error_message)
+            logger.error(error_message)
 
     def _on_open_state_application(self, event):
@@ -2044,5 +2046,5 @@
                 msg += "and model selected. "
                 msg += "No project was saved to %s" % (str(path))
-                logging.warning(msg)
+                logger.warning(msg)
                 wx.PostEvent(self, StatusEvent(status=msg, info="error"))
         except Exception:
@@ -2111,5 +2113,5 @@
         #IF SAS_OPENCL is set, settings are stored in the custom config file
         self._write_opencl_config_file()
-        logging.info(" --- SasView session was closed --- \n")
+        logger.info(" --- SasView session was closed --- \n")
         wx.Exit()
         sys.exit()
@@ -2140,5 +2142,5 @@
             new_config_file.close()
         else:
-            logging.info("Failed to save OPENCL settings in custom config file")
+            logger.info("Failed to save OPENCL settings in custom config file")
 
 
@@ -2157,9 +2159,9 @@
                 # 
                 content = response.read().strip()
-                logging.info("Connected to www.sasview.org. Latest version: %s"
+                logger.info("Connected to www.sasview.org. Latest version: %s"
                              % (content))
                 version_info = json.loads(content)
             except:
-                logging.info("Failed to connect to www.sasview.org")
+                logger.info("Failed to connect to www.sasview.org")
         self._process_version(version_info, standalone=event is None)
 
@@ -2201,5 +2203,5 @@
             msg = "guiframe: could not get latest application"
             msg += " version number\n  %s" % sys.exc_value
-            logging.error(msg)
+            logger.error(msg)
             if not standalone:
                 msg = "Could not connect to the application server."
@@ -2248,13 +2250,13 @@
                     dialog.Show(True)
                 except:
-                    logging.error("Error in _onTutorial: %s" % sys.exc_value)
+                    logger.error("Error in _onTutorial: %s" % sys.exc_value)
                     try:
                         # Try an alternate method
-                        logging.error(
+                        logger.error(
                             "Could not open the tutorial pdf, trying xhtml2pdf")
                         from xhtml2pdf import pisa
                         pisa.startViewer(path)
                     except:
-                        logging.error(
+                        logger.error(
                             "Could not open the tutorial pdf with xhtml2pdf")
                         msg = "This feature requires 'PDF Viewer'\n"
@@ -2267,10 +2269,10 @@
                     try:
                         # Try an alternate method
-                        logging.error(
+                        logger.error(
                             "Could not open the tutorial pdf, trying xhtml2pdf")
                         from xhtml2pdf import pisa
                         pisa.startViewer(path)
                     except:
-                        logging.error(
+                        logger.error(
                             "Could not open the tutorial pdf with xhtml2pdf")
                         msg = "This feature requires the Preview application\n"
@@ -2411,5 +2413,5 @@
         else:
             msg = "Guiframe does not have a current perspective"
-            logging.info(msg)
+            logger.info(msg)
 
     def set_theory(self, state_id, theory_id=None):
@@ -2422,9 +2424,9 @@
             except:
                 msg = "Guiframe set_theory: \n" + str(sys.exc_value)
-                logging.info(msg)
+                logger.info(msg)
                 wx.PostEvent(self, StatusEvent(status=msg, info="error"))
         else:
             msg = "Guiframe does not have a current perspective"
-            logging.info(msg)
+            logger.info(msg)
 
     def plot_data(self, state_id, data_id=None,
@@ -2508,5 +2510,5 @@
                                             action='remove'))
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
     def save_data1d(self, data, fname):
@@ -3306,5 +3308,5 @@
             msg = "%s Could not load " % str(APPLICATION_NAME)
             msg += "input file from command line.\n"
-            logging.error(msg)
+            logger.error(msg)
         # Display a splash screen on top of the frame.
         try:
@@ -3320,5 +3322,5 @@
             msg = "Cannot display splash screen\n"
             msg += str(sys.exc_value)
-            logging.error(msg)
+            logger.error(msg)
             self.frame.Show()
 
@@ -3375,5 +3377,5 @@
                             os.remove(file_path)
                 except:
-                    logging.error("gui_manager.clean_plugin_models:\n  %s"
+                    logger.error("gui_manager.clean_plugin_models:\n  %s"
                                   % sys.exc_value)
 
Index: src/sas/sasgui/guiframe/gui_statusbar.py
===================================================================
--- src/sas/sasgui/guiframe/gui_statusbar.py	(revision 3a22ce7eba1200abb7dc9bd39b61eba90f2cce03)
+++ src/sas/sasgui/guiframe/gui_statusbar.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -12,4 +12,6 @@
 from sas.sasgui.guiframe.gui_style import GUIFRAME_ICON
 
+logger = logging.getLogger()
+
 # Number of fields on the status bar
 NB_FIELDS = 4
@@ -71,10 +73,10 @@
             icon_type = event.info.lower()
             if icon_type == "warning":
-                logging.warning(status)
+                logger.warning(status)
                 color = (0, 0, 255) # blue
                 icon_bmp = wx.ArtProvider.GetBitmap(wx.ART_WARNING,
                                                     wx.ART_TOOLBAR)
             if icon_type == "error":
-                logging.error(status)
+                logger.error(status)
                 color = (255, 0, 0) # red
                 icon_bmp = wx.ArtProvider.GetBitmap(wx.ART_ERROR,
Index: src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py	(revision a674d0b7da37ed36693004d2d51e0941ed38842f)
+++ src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -7,4 +7,6 @@
 import wx
 import logging
+
+logger = logging.getLogger()
 
 from sas.sascalc.dataloader.loader import Loader
@@ -160,5 +162,5 @@
                 message += "\tError: {0}\n".format(error_data)
         else:
-            logging.error("Loader returned an invalid object:\n %s" % str(item))
+            logger.error("Loader returned an invalid object:\n %s" % str(item))
             data_error = True
 
@@ -182,5 +184,5 @@
                 log_msg += "Please try to open that file from \"open project\""
                 log_msg += "or \"open analysis\" menu."
-                logging.info(log_msg)
+                logger.info(log_msg)
                 file_errors[basename] = [log_msg]
                 continue
@@ -212,5 +214,5 @@
 
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
                 error_message = "The Data file you selected could not be loaded.\n"
Index: src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 29e872e4d97689a48f665443a8b1fbfae9813a54)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -24,4 +24,6 @@
 from appearanceDialog import appearanceDialog
 from graphAppearance import graphAppearance
+
+logger = logging.getLogger()
 
 DEFAULT_QMAX = 0.05
@@ -242,5 +244,5 @@
                     wx.PostEvent(self.parent, StatusEvent(status=position))
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
             if not event.leftdown:
                 # text event
@@ -255,5 +257,5 @@
                         self.canvas.draw()
                 except:
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
                 event.Skip()
                 return
@@ -409,5 +411,5 @@
             self.q_ctrl[vl_ind].SetValue(str(pos_x))
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
     def set_resizing(self, resizing=False):
Index: src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py	(revision b2b3693291d8e49fd33718753161206c1964548c)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -30,4 +30,6 @@
 from graphAppearance import graphAppearance
 (InternalEvent, EVT_INTERNAL) = wx.lib.newevent.NewEvent()
+
+logger = logging.getLogger()
 
 DEFAULT_QMAX = 0.05
@@ -432,5 +434,5 @@
             except:
                 msg = "Add Text: Error. Check your property values..."
-                logging.error(msg)
+                logger.error(msg)
                 if self.parent != None:
                     wx.PostEvent(self.parent, StatusEvent(status=msg))
Index: src/sas/sasgui/guiframe/local_perspectives/plotting/binder.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/binder.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/binder.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -4,4 +4,6 @@
 import logging
 import sys
+
+logger = logging.getLogger()
 
 class Selection(object):
@@ -70,5 +72,5 @@
             canvas.mpl_disconnect(canvas.scroll_pick_id)
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
         self.canvas = canvas
         self.figure = figure
Index: src/sas/sasgui/guiframe/proxy.py
===================================================================
--- src/sas/sasgui/guiframe/proxy.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/proxy.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -6,4 +6,7 @@
 import logging
 import re
+
+
+logger = logging.getLogger()
 
 '''
@@ -71,11 +74,11 @@
         proxy_url_list = []
         for this_pac_url in pac_urls_list:
-            logging.debug('Trying pac file (%s)...' % this_pac_url)
+            logger.debug('Trying pac file (%s)...' % this_pac_url)
             try:
                 response = urllib2.urlopen(
                     this_pac_url, timeout=self.timeout)
-                logging.debug('Succeeded (%s)...' % this_pac_url)
+                logger.debug('Succeeded (%s)...' % this_pac_url)
             except Exception:
-                logging.debug('Failled (%s)...' % this_pac_url)
+                logger.debug('Failled (%s)...' % this_pac_url)
                 continue
             pacStr = response.read()
@@ -120,30 +123,30 @@
         response = None
         try:
-            logging.debug("Trying Direct connection to %s..."%self.url)
+            logger.debug("Trying Direct connection to %s..."%self.url)
             response = urllib2.urlopen(req, timeout=self.timeout)
         except Exception, e:
-            logging.debug("Failed!")
-            logging.debug(e)
+            logger.debug("Failed!")
+            logger.debug(e)
             try:
-                logging.debug("Trying to use system proxy if it exists...")
+                logger.debug("Trying to use system proxy if it exists...")
                 self._set_proxy()
                 response = urllib2.urlopen(req, timeout=self.timeout)
             except Exception, e:
-                logging.debug("Failed!")
-                logging.debug(e)
+                logger.debug("Failed!")
+                logger.debug(e)
                 pac_urls = self._get_addresses_of_proxy_pac()
                 proxy_urls = self._parse_proxy_pac(pac_urls)
                 for proxy in proxy_urls:
                     try:
-                        logging.debug("Trying to use the proxy %s found in proxy.pac configuration"%proxy)
+                        logger.debug("Trying to use the proxy %s found in proxy.pac configuration"%proxy)
                         self._set_proxy(proxy)
                         response = urllib2.urlopen(req, timeout=self.timeout)
                     except Exception, e:
-                        logging.debug("Failed!")
-                        logging.debug(e)
+                        logger.debug("Failed!")
+                        logger.debug(e)
         if response is not None:
-            logging.debug("The connection to %s was successful."%self.url)
+            logger.debug("The connection to %s was successful."%self.url)
         else:
-            logging.warning("Connection to %s failed..."%self.url)
+            logger.warning("Connection to %s failed..."%self.url)
         return response
 
Index: src/sas/sasgui/guiframe/report_dialog.py
===================================================================
--- src/sas/sasgui/guiframe/report_dialog.py	(revision 6dd6e32012f292ecf1f21bdca4ad872eb94b706c)
+++ src/sas/sasgui/guiframe/report_dialog.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -7,4 +7,6 @@
 import sys
 import wx.html as html
+
+logger = logging.getLogger()
 
 ISPDF = False
@@ -135,5 +137,5 @@
             return pisaStatus.err
         except:
-            logging.error("Error creating pdf: %s" % sys.exc_value)
+            logger.error("Error creating pdf: %s" % sys.exc_value)
         return False
 
Index: src/sas/sasgui/perspectives/calculator/calculator.py
===================================================================
--- src/sas/sasgui/perspectives/calculator/calculator.py	(revision a0c1e1de9eb99665b31c85c4fddcfca740db719c)
+++ src/sas/sasgui/perspectives/calculator/calculator.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -28,4 +28,6 @@
 import logging
 
+logger = logging.getLogger()
+
 class Plugin(PluginBase):
     """
@@ -36,5 +38,5 @@
         PluginBase.__init__(self, name="Calculator")
         # Log startup
-        logging.info("Calculator plug-in started")
+        logger.info("Calculator plug-in started")
         self.sub_menu = "Tool"
         self.data_edit_frame = None
Index: src/sas/sasgui/perspectives/calculator/gen_scatter_panel.py
===================================================================
--- src/sas/sasgui/perspectives/calculator/gen_scatter_panel.py	(revision 0f7c930fc2c325971c76a60d39f2e3719b8143a3)
+++ src/sas/sasgui/perspectives/calculator/gen_scatter_panel.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -38,4 +38,6 @@
 from sas.sasgui.guiframe.events import NewPlotEvent
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
+
+logger = logging.getLogger()
 
 _BOX_WIDTH = 76
@@ -699,5 +701,5 @@
                 ax = Axes3D(panel.figure)
             except:
-                logging.error("PlotPanel could not import Axes3D")
+                logger.error("PlotPanel could not import Axes3D")
                 raise
         panel.dimension = 3
@@ -1344,5 +1346,5 @@
             msg = "OMF Panel: %s" % sys.exc_value
             infor = 'Error'
-            #logging.error(msg)
+            #logger.error(msg)
             if self.parent.parent != None:
                 # inform msg to wx
@@ -1696,5 +1698,5 @@
                 msg = "%s cannot write %s\n" % ('Generic Scattering', str(path))
                 infor = 'Error'
-                #logging.error(msg)
+                #logger.error(msg)
                 if self.parent.parent != None:
                     # inform msg to wx
Index: src/sas/sasgui/perspectives/calculator/model_editor.py
===================================================================
--- src/sas/sasgui/perspectives/calculator/model_editor.py	(revision ddbac6633a1e7ec42b99bb39f46b9889ccf26084)
+++ src/sas/sasgui/perspectives/calculator/model_editor.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -32,4 +32,6 @@
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
 from .pyconsole import show_model_output, check_model
+
+logger = logging.getLogger()
 
 
@@ -985,5 +987,5 @@
                 exec "from %s import Model" % name
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
         # Prepare the messagebox
Index: src/sas/sasgui/perspectives/calculator/resolution_calculator_panel.py
===================================================================
--- src/sas/sasgui/perspectives/calculator/resolution_calculator_panel.py	(revision a0c1e1de9eb99665b31c85c4fddcfca740db719c)
+++ src/sas/sasgui/perspectives/calculator/resolution_calculator_panel.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -34,4 +34,6 @@
 from sas.sasgui.perspectives.calculator import calculator_widgets as widget
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
+
+logger = logging.getLogger()
 
 _BOX_WIDTH = 100
@@ -1098,5 +1100,5 @@
                 new_string.append(value)
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
         return new_string
@@ -1140,5 +1142,5 @@
                         return out
                 except:
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
 
     def _on_xy_coordinate(self, event=None):
@@ -1318,5 +1320,5 @@
                 except:
                     # Skip non-data lines
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
 
             return [wavelength, intensity]
Index: src/sas/sasgui/perspectives/corfunc/corfunc.py
===================================================================
--- src/sas/sasgui/perspectives/corfunc/corfunc.py	(revision 1dc8ec9bbfd72210acd49400626adfb8eb6c3c87)
+++ src/sas/sasgui/perspectives/corfunc/corfunc.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -20,4 +20,5 @@
 from plot_labels import *
 
+logger = logging.getLogger()
 
 class Plugin(PluginBase):
@@ -29,5 +30,5 @@
     def __init__(self):
         PluginBase.__init__(self, name="Correlation Function")
-        logging.info("Correlation function plug-in started")
+        logger.info("Correlation function plug-in started")
         self._always_active = True
         self.state_reader = Reader(self.set_state)
Index: src/sas/sasgui/perspectives/corfunc/corfunc_state.py
===================================================================
--- src/sas/sasgui/perspectives/corfunc/corfunc_state.py	(revision ae9b8bf0596d163a9011e6b945a6fb09f4b36456)
+++ src/sas/sasgui/perspectives/corfunc/corfunc_state.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -13,4 +13,6 @@
 from sas.sascalc.dataloader.loader import Loader
 
+logger = logging.getLogger()
+
 CORNODE_NAME = 'corfunc'
 CANSAS_NS = 'cansas1d/1.0'
@@ -216,5 +218,5 @@
                     msg = ("CorfuncState.fromXML: Could not read timestamp",
                         "\n{}").format(sys.exc_value)
-                    logging.error(msg)
+                    logger.error(msg)
 
             # Parse current state
@@ -360,4 +362,4 @@
             msg = "XML document does not contain CorfuncState information\n{}"
             msg.format(sys.exc_value)
-            logging.info(msg)
+            logger.info(msg)
         return state
Index: src/sas/sasgui/perspectives/file_converter/file_converter.py
===================================================================
--- src/sas/sasgui/perspectives/file_converter/file_converter.py	(revision ba65aff97e4c9511e2e199a78137312a6adc403d)
+++ src/sas/sasgui/perspectives/file_converter/file_converter.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -6,4 +6,6 @@
 from sas.sasgui.guiframe.plugin_base import PluginBase
 from sas.sasgui.perspectives.file_converter.converter_panel import ConverterWindow
+
+logger = logging.getLogger()
 
 class Plugin(PluginBase):
@@ -15,5 +17,5 @@
     def __init__(self):
         PluginBase.__init__(self, name="File Converter")
-        logging.info("File Converter plug-in started")
+        logger.info("File Converter plug-in started")
         self._sub_menu = "Tool"
         self.converter_frame = None
Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision b301db9771a6b47f4e6cab8b5e980f14f16dc65a)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -34,4 +34,5 @@
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
 
+logger = logging.getLogger()
 
 (PageInfoEvent, EVT_PAGE_INFO) = wx.lib.newevent.NewEvent()
@@ -782,5 +783,5 @@
                 except Exception:
                     # Skip non-data lines
-                    logging.error(traceback.format_exc())
+                    logger.error(traceback.format_exc())
             return numpy.array(angles), numpy.array(weights)
         except:
@@ -1304,5 +1305,5 @@
                     [state.values, state.weights]
             except Exception:
-                logging.error(traceback.format_exc())
+                logger.error(traceback.format_exc())
             selection = self._find_polyfunc_selection(disp_model)
             for list in self.fittable_param:
@@ -1321,5 +1322,5 @@
                             list[6].Disable()
                         except Exception:
-                            logging.error(traceback.format_exc())
+                            logger.error(traceback.format_exc())
             # For array, disable all fixed params
             if selection == 1:
@@ -1330,5 +1331,5 @@
                             item[2].Disable()
                         except Exception:
-                            logging.error(traceback.format_exc())
+                            logger.error(traceback.format_exc())
 
     def _selectDlg(self):
@@ -1464,5 +1465,5 @@
                 self.Refresh()
 
-        # logging.info("is_modified flag set to %g",is_modified)
+        # logger.info("is_modified flag set to %g",is_modified)
         return is_modified
 
@@ -1569,5 +1570,5 @@
             self.save_current_state()
         except Exception:
-            logging.error(traceback.format_exc())
+            logger.error(traceback.format_exc())
 
         return flag, is_modified
@@ -2384,5 +2385,5 @@
                     self.model.set_dispersion(p, disp_model)
                 except Exception:
-                    logging.error(traceback.format_exc())
+                    logger.error(traceback.format_exc())
 
         # save state into
@@ -2499,5 +2500,5 @@
             self.Refresh()
         except Exception:
-            logging.error(traceback.format_exc())
+            logger.error(traceback.format_exc())
             # Error msg
             msg = "Error occurred:"
@@ -2600,5 +2601,5 @@
                 del self.state.model._persistency_dict[name.split('.')[0]]
         except Exception:
-            logging.error(traceback.format_exc())
+            logger.error(traceback.format_exc())
 
     def _lay_out(self):
@@ -2742,5 +2743,5 @@
             except Exception:
                 # Not for control panels
-                logging.error(traceback.format_exc())
+                logger.error(traceback.format_exc())
         # Make sure the resduals plot goes to the last
         if res_item is not None:
@@ -3075,5 +3076,5 @@
                     disfunc = str(item[7].GetValue())
             except Exception:
-                logging.error(traceback.format_exc())
+                logger.error(traceback.format_exc())
 
             # 2D
@@ -3118,5 +3119,5 @@
                         disfunc += ' ' + str(weight)
             except Exception:
-                logging.error(traceback.format_exc())
+                logger.error(traceback.format_exc())
             content += name + ',' + str(check) + ',' + value + disfunc + ',' + \
                        bound_lo + ',' + bound_hi + ':'
@@ -3389,5 +3390,5 @@
 
         except Exception:
-            logging.error(traceback.format_exc())
+            logger.error(traceback.format_exc())
             print "Error in BasePage._paste_poly_help: %s" % \
                   sys.exc_info()[1]
Index: src/sas/sasgui/perspectives/fitting/fitting.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitting.py	(revision 4c5098cac470ea0a367a8f92be0ed0ac428bcc12)
+++ src/sas/sasgui/perspectives/fitting/fitting.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -48,4 +48,6 @@
 
 from . import models
+
+logger = logging.getLogger()
 
 MAX_NBR_DATA = 4
@@ -119,5 +121,5 @@
         self.page_finder = {}
         # Log startup
-        logging.info("Fitting plug-in started")
+        logger.info("Fitting plug-in started")
         self.batch_capable = self.get_batch_capable()
 
@@ -346,5 +348,5 @@
                                 page.formfactorbox.SetLabel(current_val)
         except:
-            logging.error("update_custom_combo: %s", sys.exc_value)
+            logger.error("update_custom_combo: %s", sys.exc_value)
 
     def set_edit_menu(self, owner):
@@ -586,5 +588,5 @@
                 msg = "Fitting: cannot deal with the theory received"
                 evt = StatusEvent(status=msg, info="error")
-                logging.error("set_theory " + msg + "\n" + str(sys.exc_value))
+                logger.error("set_theory " + msg + "\n" + str(sys.exc_value))
                 wx.PostEvent(self.parent, evt)
 
@@ -1806,5 +1808,5 @@
         Handle exception from calculator by posting it as an error.
         """
-        logging.error("".join(traceback.format_exception(etype, value, tb)))
+        logger.error("".join(traceback.format_exception(etype, value, tb)))
         msg = traceback.format_exception(etype, value, tb, limit=1)
         evt = StatusEvent(status="".join(msg), type="stop", info="error")
Index: src/sas/sasgui/perspectives/fitting/models.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/models.py	(revision e92a35222de59b469e74be44064685ec4edc7c19)
+++ src/sas/sasgui/perspectives/fitting/models.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -18,4 +18,6 @@
 from sas.sasgui.guiframe.CategoryInstaller import CategoryInstaller
 from sasmodels.sasview_model import load_custom_model, load_standard_models
+
+logger = logging.getLogger()
 
 
@@ -168,10 +170,10 @@
     if not os.path.isdir(dir):
         msg = "SasView couldn't locate Model plugin folder %r." % dir
-        logging.warning(msg)
+        logger.warning(msg)
         return {}
 
     plugin_log("looking for models in: %s" % str(dir))
     #compile_file(dir)  #always recompile the folder plugin
-    logging.info("plugin model dir: %s" % str(dir))
+    logger.info("plugin model dir: %s" % str(dir))
 
     plugins = {}
@@ -188,5 +190,5 @@
                 msg += "\nwhile accessing model in %r" % path
                 plugin_log(msg)
-                logging.warning("Failed to load plugin %r. See %s for details"
+                logger.warning("Failed to load plugin %r. See %s for details"
                                 % (path, PLUGIN_LOG))
             
@@ -261,5 +263,5 @@
         if self.is_changed():
             return  _findModels(dir)
-        logging.info("plugin model : %s" % str(temp))
+        logger.info("plugin model : %s" % str(temp))
         return temp
 
Index: src/sas/sasgui/perspectives/fitting/pagestate.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/pagestate.py	(revision 27109e5cd4b7a9b36dd9bb6e66db62057374322b)
+++ src/sas/sasgui/perspectives/fitting/pagestate.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -33,4 +33,6 @@
 from sas.sascalc.dataloader.data_info import Data2D, Collimation, Detector
 from sas.sascalc.dataloader.data_info import Process, Aperture
+
+logger = logging.getLogger()
 
 # Information to read/write state as xml
@@ -395,5 +397,5 @@
                     msg = "Save state does not have enough information to load"
                     msg += " the all of the data."
-                    logging.warning(msg=msg)
+                    logger.warning(msg=msg)
             else:
                 self.formfactorcombobox = FIRST_FORM[self.categorycombobox]
@@ -620,5 +622,5 @@
             except Exception:
                 msg = "Report string expected 'name: value' but got %r" % line
-                logging.error(msg)
+                logger.error(msg)
             if name.count("State created"):
                 repo_time = "" + value
@@ -662,5 +664,5 @@
                 except Exception:
                     msg = "While parsing 'data: ...'\n"
-                    logging.error(msg + traceback.format_exc())
+                    logger.error(msg + traceback.format_exc())
             if name == "model name ":
                 try:
@@ -678,5 +680,5 @@
                 except Exception:
                     msg = "While parsing 'Plotting Range: ...'\n"
-                    logging.error(msg + traceback.format_exc())
+                    logger.error(msg + traceback.format_exc())
         paramval = ""
         for lines in param_string.split(":"):
@@ -1037,5 +1039,5 @@
                     msg = "PageState.fromXML: Could not"
                     msg += " read timestamp\n %s" % sys.exc_value
-                    logging.error(msg)
+                    logger.error(msg)
 
             if entry is not None:
@@ -1077,5 +1079,5 @@
                             except Exception:
                                 base = "unable to load distribution %r for %s"
-                                logging.error(base % (value, parameter))
+                                logger.error(base % (value, parameter))
                                 continue
                         _disp_obj_dict = getattr(self, varname)
@@ -1099,5 +1101,5 @@
                                 msg = ("Error reading %r from %s %s\n"
                                        % (line, tagname, name))
-                                logging.error(msg + traceback.format_exc())
+                                logger.error(msg + traceback.format_exc())
                         dic[name] = numpy.array(value_list)
                     setattr(self, varname, dic)
@@ -1207,5 +1209,5 @@
 
         except:
-            logging.info("XML document does not contain fitting information.\n"
+            logger.info("XML document does not contain fitting information.\n"
                          + traceback.format_exc())
 
Index: src/sas/sasgui/perspectives/invariant/invariant.py
===================================================================
--- src/sas/sasgui/perspectives/invariant/invariant.py	(revision c10d9d6c8667422d3db329ac32d0528a6cce3fc6)
+++ src/sas/sasgui/perspectives/invariant/invariant.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -27,4 +27,6 @@
 from sas.sasgui.guiframe.plugin_base import PluginBase
 
+logger = logging.getLogger()
+
 class Plugin(PluginBase):
     """
@@ -46,5 +48,5 @@
 
         # Log startup
-        logging.info("Invariant plug-in started")
+        logger.info("Invariant plug-in started")
 
     def get_data(self):
@@ -280,5 +282,5 @@
 
         except:
-            logging.error("invariant.set_state: %s" % sys.exc_value)
+            logger.error("invariant.set_state: %s" % sys.exc_value)
 
     def on_set_state_helper(self, event=None):
Index: src/sas/sasgui/perspectives/invariant/invariant_panel.py
===================================================================
--- src/sas/sasgui/perspectives/invariant/invariant_panel.py	(revision 18b7ecb9592132eb5e291874eb5b6c2046d54a45)
+++ src/sas/sasgui/perspectives/invariant/invariant_panel.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -24,4 +24,6 @@
 from sas.sasgui.guiframe.panel_base import PanelBase
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
+
+logger = logging.getLogger()
 
 # The minimum q-value to be used when extrapolating
@@ -460,5 +462,5 @@
                 self._manager.plot_theory(name="Low-Q extrapolation")
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
     def get_high_qstar(self, inv, high_q=False):
@@ -494,5 +496,5 @@
                 self._manager.plot_theory(name="High-Q extrapolation")
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
     def get_qstar(self, inv):
@@ -845,5 +847,5 @@
             attr.SetValue(value)
         except:
-            logging.error("Invariant state: %s", sys.exc_value)
+            logger.error("Invariant state: %s", sys.exc_value)
 
     def get_bookmark_by_num(self, num=None):
@@ -862,5 +864,5 @@
             _, _, current_state, comp_state = self.state.bookmark_list[int(num)]
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
             raise ValueError, "No such bookmark exists"
 
@@ -957,5 +959,5 @@
                     self.state.clone_state()
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         self._set_undo_flag(True)
@@ -1001,5 +1003,5 @@
                 del self.state.state_list[str(i)]
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
         # Enable the undo button if it was not
         self._set_undo_flag(True)
@@ -1066,5 +1068,5 @@
                 del self.state.state_list[str(i)]
             except:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
 
         # try to add new state of the text changes in the state_list
@@ -1081,5 +1083,5 @@
             self.state.state_list[str(self.state.state_num)] = self.state.clone_state()
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
         self._set_undo_flag(True)
@@ -1103,5 +1105,5 @@
             self.state.state_list[str(self.state.state_num)] = self.state.clone_state()
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
     def _get_input_list(self):
Index: src/sas/sasgui/perspectives/invariant/invariant_state.py
===================================================================
--- src/sas/sasgui/perspectives/invariant/invariant_state.py	(revision db5294eb167ea87b105d85329af888f2b1a980fd)
+++ src/sas/sasgui/perspectives/invariant/invariant_state.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -16,4 +16,6 @@
 from sas.sasgui.guiframe.gui_style import GUIFRAME_ID
 from sas.sasgui.guiframe.dataFitting import Data1D
+
+logger = logging.getLogger()
 
 INVNODE_NAME = 'invariant'
@@ -381,5 +383,5 @@
                     msg = "InvariantSate.fromXML: Could not read"
                     msg += " timestamp\n %s" % sys.exc_value
-                    logging.error(msg)
+                    logger.error(msg)
 
             # Parse bookmarks
@@ -694,5 +696,5 @@
             msg = "XML document does not contain invariant"
             msg += " information.\n %s" % sys.exc_value
-            logging.info(msg)
+            logger.info(msg)
         return state
 
Index: src/sas/sasgui/perspectives/invariant/report_dialog.py
===================================================================
--- src/sas/sasgui/perspectives/invariant/report_dialog.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/perspectives/invariant/report_dialog.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -20,4 +20,6 @@
 
 from sas.sasgui.guiframe.report_dialog import BaseReportDialog
+
+logger = logging.getLogger()
 
 class ReportDialog(BaseReportDialog):
@@ -92,5 +94,5 @@
                     except:
                         # DO not open
-                        logging.error("Could not open file: %s" % sys.exc_value)
+                        logger.error("Could not open file: %s" % sys.exc_value)
             # delete image file
             os.remove(pic_fname)
Index: src/sas/sasgui/perspectives/pr/explore_dialog.py
===================================================================
--- src/sas/sasgui/perspectives/pr/explore_dialog.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/perspectives/pr/explore_dialog.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -22,4 +22,6 @@
 import logging
 import sys
+
+logger = logging.getLogger()
 
 # Avoid Matplotlib complaining about the lack of legend on the plot
@@ -284,5 +286,5 @@
             msg += "a change in the " % str(output_type)
             msg += "ExploreDialog code."
-            logging.error(msg)
+            logger.error(msg)
 
     def __do_layout(self):
@@ -418,5 +420,5 @@
                 msg = "ExploreDialog: inversion failed "
                 msg += "for D_max=%s\n%s" % (str(d), sys.exc_value)
-                logging.error(msg)
+                logger.error(msg)
 
         self.results = results
Index: src/sas/sasgui/perspectives/pr/inversion_panel.py
===================================================================
--- src/sas/sasgui/perspectives/pr/inversion_panel.py	(revision 18b7ecb9592132eb5e291874eb5b6c2046d54a45)
+++ src/sas/sasgui/perspectives/pr/inversion_panel.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -17,4 +17,6 @@
 from pr_widgets import OutputTextCtrl
 from sas.sasgui.guiframe.documentation_window import DocumentationWindow
+
+logger = logging.getLogger()
 
 if sys.platform.count("win32") > 0:
@@ -710,8 +712,8 @@
             self.alpha_ctl.SetValue(alpha)
         except ValueError:
-            logging.error("InversionControl._on_accept_alpha got a value that was not a number: %s" % alpha )
+            logger.error("InversionControl._on_accept_alpha got a value that was not a number: %s" % alpha )
         except:
             # No estimate or bad estimate, either do nothing
-            logging.error("InversionControl._on_accept_alpha: %s" % sys.exc_value)
+            logger.error("InversionControl._on_accept_alpha: %s" % sys.exc_value)
 
     def _on_accept_nterms(self, evt):
@@ -726,8 +728,8 @@
             self.nfunc_ctl.SetValue(nterms)
         except ValueError:
-            logging.error("InversionControl._on_accept_nterms got a value that was not a number: %s" % nterms )
+            logger.error("InversionControl._on_accept_nterms got a value that was not a number: %s" % nterms )
         except:
             # No estimate or bad estimate, either do nothing
-            logging.error("InversionControl._on_accept_nterms: %s" % sys.exc_value)
+            logger.error("InversionControl._on_accept_nterms: %s" % sys.exc_value)
 
     def clear_panel(self):
@@ -947,5 +949,5 @@
             except:
                 msg = "InversionControl._change_file: %s" % sys.exc_value
-                logging.error(msg)
+                logger.error(msg)
 
     def on_help(self, event):
Index: src/sas/sasgui/perspectives/pr/inversion_state.py
===================================================================
--- src/sas/sasgui/perspectives/pr/inversion_state.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/perspectives/pr/inversion_state.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -22,4 +22,6 @@
 from sas.sascalc.dataloader.readers.cansas_reader import get_content
 
+logger = logging.getLogger()
+
 PRNODE_NAME = 'pr_inversion'
 CANSAS_NS = "cansas1d/1.0"
@@ -250,5 +252,5 @@
                     msg = "InversionState.fromXML: Could not read "
                     msg += "timestamp\n %s" % sys.exc_value
-                    logging.error(msg)
+                    logger.error(msg)
 
             # Parse inversion inputs
@@ -306,5 +308,5 @@
                         err_msg += "%d %d" % (len(self.coefficients),
                                               self.nfunc)
-                        logging.error(err_msg)
+                        logger.error(err_msg)
                         self.coefficients = None
 
@@ -343,5 +345,5 @@
                         err_msg += " covariance matrix: "
                         err_msg += "%d %d" % (len(self.covariance), self.nfunc)
-                        logging.error(err_msg)
+                        logger.error(err_msg)
                         self.covariance = None
 
@@ -430,5 +432,5 @@
             msg = "XML document does not contain P(r) "
             msg += "information.\n %s" % sys.exc_value
-            logging.info(msg)
+            logger.info(msg)
 
         return state
Index: src/sas/sasgui/perspectives/pr/pr.py
===================================================================
--- src/sas/sasgui/perspectives/pr/pr.py	(revision a69a967b8ace2263edf57d6328d2ece6d26f1492)
+++ src/sas/sasgui/perspectives/pr/pr.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -34,4 +34,6 @@
 from pr_widgets import load_error
 from sas.sasgui.guiframe.plugin_base import PluginBase
+
+logger = logging.getLogger()
 
 
@@ -113,5 +115,5 @@
 
         # Log startup
-        logging.info("Pr(r) plug-in started")
+        logger.info("Pr(r) plug-in started")
 
     def delete_data(self, data_id):
@@ -181,5 +183,5 @@
             self.control_panel.set_state(state)
         except:
-            logging.error("prview.set_state: %s" % sys.exc_value)
+            logger.error("prview.set_state: %s" % sys.exc_value)
 
 
@@ -508,5 +510,5 @@
                     data_err = numpy.append(data_err, err)
                 except:
-                    logging.error(sys.exc_value)
+                    logger.error(sys.exc_value)
 
         if not scale == None:
@@ -559,5 +561,5 @@
                         data_err = numpy.append(data_err, err)
                     except:
-                        logging.error(sys.exc_value)
+                        logger.error(sys.exc_value)
                 elif line.find("The 6 columns") >= 0:
                     data_started = True
@@ -1201,5 +1203,5 @@
             dataset = panel.plots[panel.graph.selected_plottable].name
         else:
-            logging.info("Prview Error: No data is available")
+            logger.info("Prview Error: No data is available")
             return
 
@@ -1211,5 +1213,5 @@
         except:
             self.control_panel.alpha = self.alpha
-            logging.info("Prview :Alpha Not estimate yet")
+            logger.info("Prview :Alpha Not estimate yet")
         try:
             estimate = int(self.control_panel.nterms_estimate)
@@ -1217,5 +1219,5 @@
         except:
             self.control_panel.nfunc = self.nfunc
-            logging.info("Prview : ntemrs Not estimate yet")
+            logger.info("Prview : ntemrs Not estimate yet")
 
         self.current_plottable = panel.plots[panel.graph.selected_plottable]
Index: src/sas/sasgui/perspectives/simulation/simulation.py
===================================================================
--- src/sas/sasgui/perspectives/simulation/simulation.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/perspectives/simulation/simulation.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -24,4 +24,6 @@
 from sas.sascalc.data_util.calcthread import CalcThread
 from sas.guicomm.events import NewPlotEvent, StatusEvent    
+
+logger = logging.getLogger()
 
 class Calc1D(CalcThread):
@@ -93,5 +95,5 @@
         self._default_save_location = os.getcwd()
         # Log startup
-        logging.info("Simulation plug-in started")
+        logger.info("Simulation plug-in started")
         
     def get_panels(self, parent):
Index: src/sas/sasgui/plottools/PlotPanel.py
===================================================================
--- src/sas/sasgui/plottools/PlotPanel.py	(revision a5b8253583189ae64cae0529b92e16221f283019)
+++ src/sas/sasgui/plottools/PlotPanel.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -33,4 +33,6 @@
 from sas.sasgui.guiframe.events import StatusEvent
 from .toolbar import NavigationToolBar, PlotPrintout, bind
+
+logger = logging.getLogger()
 
 def show_tree(obj, d=0):
@@ -1506,5 +1508,5 @@
                     from mpl_toolkits.mplot3d import Axes3D
                 except:
-                    logging.error("PlotPanel could not import Axes3D")
+                    logger.error("PlotPanel could not import Axes3D")
                 self.subplot.figure.clear()
                 ax = Axes3D(self.subplot.figure)
Index: src/sas/sasgui/plottools/binder.py
===================================================================
--- src/sas/sasgui/plottools/binder.py	(revision d7bb5267934b5676c90b1655346a3793a8022965)
+++ src/sas/sasgui/plottools/binder.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -4,4 +4,6 @@
 import sys
 import logging
+
+logger = logging.getLogger()
 
 class Selection(object):
@@ -121,5 +123,5 @@
             for cid in self._connections: self.canvas.mpl_disconnect(cid)
         except:
-            logging.error("Error disconnection canvas: %s" % sys.exc_value)
+            logger.error("Error disconnection canvas: %s" % sys.exc_value)
         self._connections = []
 
Index: src/sas/sasgui/plottools/canvas.py
===================================================================
--- src/sas/sasgui/plottools/canvas.py	(revision d7bb5267934b5676c90b1655346a3793a8022965)
+++ src/sas/sasgui/plottools/canvas.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -11,4 +11,6 @@
 from matplotlib.backends.backend_wx import RendererWx
 
+logger = logging.getLogger()
+
 
 def draw_image(self, x, y, im, bbox, clippath=None, clippath_trans=None):
@@ -96,5 +98,5 @@
             dc.DrawBitmap(self.canvas.bitmap, (0, 0))
         except:
-            logging.error(sys.exc_value)
+            logger.error(sys.exc_value)
 
     # restore original figure  resolution
@@ -207,5 +209,5 @@
                 fig.draw(self)
             except ValueError:
-                logging.error(sys.exc_value)
+                logger.error(sys.exc_value)
         else:
             self._isRendered = False
Index: src/sas/sasgui/plottools/plottables.py
===================================================================
--- src/sas/sasgui/plottools/plottables.py	(revision a9f579c8400c480f42c42445e1ff4dab09a6baa4)
+++ src/sas/sasgui/plottools/plottables.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -46,4 +46,6 @@
 import sys
 import logging
+
+logger = logging.getLogger()
 
 if 'any' not in dir(__builtins__):
@@ -808,6 +810,6 @@
                         tempdy.append(self.dy[i])
                 except:
-                    logging.error("check_data_logX: skipping point x %g", self.x[i])
-                    logging.error(sys.exc_value)
+                    logger.error("check_data_logX: skipping point x %g", self.x[i])
+                    logger.error(sys.exc_value)
             self.x = tempx
             self.y = tempy
@@ -838,6 +840,6 @@
                         tempdy.append(self.dy[i])
                 except:
-                    logging.error("check_data_logY: skipping point %g", self.y[i])
-                    logging.error(sys.exc_value)
+                    logger.error("check_data_logY: skipping point %g", self.y[i])
+                    logger.error(sys.exc_value)
 
             self.x = tempx
Index: src/sas/sasgui/plottools/toolbar.py
===================================================================
--- src/sas/sasgui/plottools/toolbar.py	(revision d7bb5267934b5676c90b1655346a3793a8022965)
+++ src/sas/sasgui/plottools/toolbar.py	(revision c155a16ca3fb1da7057f151c62510d780700b9e8)
@@ -6,4 +6,6 @@
 from matplotlib.backends.backend_wx import _load_bitmap
 import logging
+
+logger = logging.getLogger()
 
 # Event binding code changed after version 2.5
@@ -94,5 +96,5 @@
             self._parent.onToolContextMenu(event=event)
         except:
-            logging.error("Plot toolbar could not show menu")
+            logger.error("Plot toolbar could not show menu")
 
     def context_menu(self, event):
@@ -122,5 +124,5 @@
         except:
             import traceback
-            logging.error(traceback.format_exc())
+            logger.error(traceback.format_exc())
 
     def copy_figure(self, event):
