VERSION="2.0.0"
PROGRAM="rarslave2"
-import os, sys, optparse
-import RarslaveLogger
+import os, sys, optparse, logging
import RarslaveDetector
import RarslaveGlobals
from RarslaveCommon import *
# Global options from the RarslaveGlobals class
options = RarslaveGlobals.options
config = RarslaveGlobals.config
-logger = RarslaveGlobals.logger
+
+# A tiny class to hold logging output until we're finished
+class DelayedLogger (object):
+ def __init__ (self, output=sys.stdout.write):
+ self.__messages = []
+ self.__output = output
+
+ def write (self, msg):
+ self.__messages.append (msg)
+
+ def flush (self):
+ pass
+
+ def size (self):
+ """Returns the number of messages queued for printing"""
+ return len (self.__messages)
+
+ def close (self):
+ """Print all messages, clear the queue"""
+ for m in self.__messages:
+ self.__output (m)
+
+ self.__messages = []
# A tiny class used to find unique PAR2 sets
class CompareSet (object):
loglevel = options.verbose - options.quiet
- if loglevel < RarslaveLogger.MessageType.Fatal:
- loglevel = RarslaveLogger.MessageType.Fatal
-
- if loglevel > RarslaveLogger.MessageType.Debug:
- loglevel = RarslaveLogger.MessageType.Debug
-
- return loglevel
+ if loglevel > 1:
+ loglevel = 1
-def printMessageTable (loglevel):
+ if loglevel < -3:
+ loglevel = -3
- if logger.hasFatalMessages ():
- print '\nFatal Messages\n' + '=' * 80
- logger.printLoglevel (RarslaveLogger.MessageType.Fatal)
+ LEVELS = { 1 : logging.DEBUG,
+ 0 : logging.INFO,
+ -1: logging.WARNING,
+ -2: logging.ERROR,
+ -3: logging.CRITICAL
+ }
- if loglevel == RarslaveLogger.MessageType.Fatal:
- return
-
- if logger.hasNormalMessages ():
- print '\nNormal Messages\n' + '=' * 80
- logger.printLoglevel (RarslaveLogger.MessageType.Normal)
-
- if loglevel == RarslaveLogger.MessageType.Normal:
- return
-
- if logger.hasVerboseMessages ():
- print '\nVerbose Messages\n' + '=' * 80
- logger.printLoglevel (RarslaveLogger.MessageType.Verbose)
-
- if loglevel == RarslaveLogger.MessageType.Verbose:
- return
-
- if logger.hasDebugMessages ():
- print '\nDebug Messages\n' + '=' * 80
- logger.printLoglevel (RarslaveLogger.MessageType.Debug)
-
- return
+ return LEVELS [loglevel]
def main ():
+ # Setup the logger
+ logger = DelayedLogger ()
+ logging.basicConfig (stream=logger, level=logging.WARNING, \
+ format='%(levelname)-8s %(message)s')
+
# Build the OptionParser
parser = optparse.OptionParser()
parser.add_option('-n', '--not-recursive',
# Run any special actions that are needed on these options
run_options (options)
- # Find the loglevel using the options given
- loglevel = find_loglevel (options)
+ # Find the loglevel using the options given
+ logging.getLogger().setLevel (find_loglevel (options))
# Run recursively
if options.recursive:
ret = detector.runMatchingTypes ()
# Print the results
- printMessageTable (loglevel)
+ if logger.size () > 0:
+ print '\nLog\n' + '=' * 80
+ logger.close ()
# Done!
return 0