changes proposed by Aaron Helsinger and GENI
[sfa.git] / sfa / util / sfalogging.py
index ac84037..361a243 100644 (file)
@@ -48,9 +48,15 @@ class _SfaLogger:
         try:
             handler=logging.handlers.RotatingFileHandler(logfile,maxBytes=1000000, backupCount=5) 
         except IOError:
-            # This is usually a permissions error becaue the file is
+            # This is usually a permissions error because the file is
             # owned by root, but httpd is trying to access it.
-            tmplogfile=os.getenv("TMPDIR", "/tmp") + os.path.sep + os.path.basename(logfile)
+            tmplogfile=os.path.join(os.getenv("TMPDIR", os.getenv("TMP", os.path.normpath("/tmp"))), os.path.basename(logfile))
+            tmplogfile = os.path.normpath(tmplogfile)
+
+            tmpdir = os.path.dirname(tmplogfile)
+            if tmpdir and tmpdir != "" and not os.path.exists(tmpdir):
+                os.makedirs(tmpdir)
+
             # In strange uses, 2 users on same machine might use same code,
             # meaning they would clobber each others files
             # We could (a) rename the tmplogfile, or (b)
@@ -83,6 +89,9 @@ class _SfaLogger:
     def setLevelDebug(self):
         self.logger.setLevel(logging.DEBUG)
 
+    def debugEnabled (self):
+        return self.logger.getEffectiveLevel() == logging.DEBUG
+
     # define a verbose option with s/t like
     # parser.add_option("-v", "--verbose", action="count", dest="verbose", default=0)
     # and pass the coresponding options.verbose to this method to adjust level
@@ -96,6 +105,8 @@ class _SfaLogger:
     # in case some other code needs a boolean
     def getBoolVerboseFromOpt(self,verbose):
         return verbose>=1
+    def getBoolDebugFromOpt(self,verbose):
+        return verbose>=2
 
     ####################
     def info(self, msg):
@@ -144,9 +155,6 @@ debug_logger = _SfaLogger(loggername='debug', level=logging.DEBUG)
 warn_logger = _SfaLogger(loggername='warning', level=logging.WARNING)
 error_logger = _SfaLogger(loggername='error', level=logging.ERROR)
 critical_logger = _SfaLogger(loggername='critical', level=logging.CRITICAL)
-
-#sql_logger = _SfaLogger(loggername = 'sqlalchemy.engine', level=logging.DEBUG)
-
 logger = info_logger
 sfi_logger = _SfaLogger(logfile=os.path.expanduser("~/.sfi/")+'sfi.log',loggername='sfilog', level=logging.DEBUG)
 ########################################