Parcourir la source

celeryev: Added --logfile/-f and --loglevel/-l options, --freq/-f renamed to --freq|-F

Ask Solem il y a 14 ans
Parent
commit
0ec99e993d
2 fichiers modifiés avec 27 ajouts et 14 suppressions
  1. 12 7
      celery/bin/celeryev.py
  2. 15 7
      celery/events/snapshot.py

+ 12 - 7
celery/bin/celeryev.py

@@ -1,5 +1,6 @@
-import sys
+import logging
 import optparse
+import sys
 
 from celery.events.cursesmon import evtop
 from celery.events.dumper import evdump
@@ -13,24 +14,28 @@ OPTION_LIST = (
     optparse.make_option('-c', '--camera',
         action="store", dest="camera",
         help="Camera class to take event snapshots with."),
-    optparse.make_option('-f', '--frequency', '--freq',
+    optparse.make_option('-F', '--frequency', '--freq',
         action="store", dest="frequency", type="float", default=1.0,
         help="Recording: Snapshot frequency."),
-    optparse.make_option('-x', '--verbose',
-        action="store_true", dest="verbose",
-        help="Show more output."),
     optparse.make_option('-r', '--maxrate',
         action="store", dest="maxrate", default=None,
         help="Recording: Shutter rate limit (e.g. 10/m)"),
+    optparse.make_option('-l', '--loglevel',
+        action="store", dest="loglevel", default="WARNING",
+        help="Loglevel. Default is WARNING."),
+    optparse.make_option('-f', '--logfile',
+        action="store", dest="logfile", default=None,
+        help="Log file. Default is <stderr>"),
 )
 
 
 def run_celeryev(dump=False, camera=None, frequency=1.0, maxrate=None,
-        verbose=None, **kwargs):
+        loglevel=logging.WARNING, logfile=None, **kwargs):
     if dump:
         return evdump()
     if camera:
-        return evcam(camera, frequency, maxrate, verbose=verbose)
+        return evcam(camera, frequency, maxrate,
+                     loglevel=loglevel, logfile=logfile)
     return evtop()
 
 

+ 15 - 7
celery/events/snapshot.py

@@ -2,6 +2,8 @@ import sys
 import time
 import timer2
 
+from celery import conf
+from celery import log
 from celery.datastructures import TokenBucket
 from celery.events import EventReceiver
 from celery.events.state import State
@@ -18,11 +20,11 @@ class Polaroid(object):
     _tref = None
 
     def __init__(self, state, freq=1.0, maxrate=None,
-            cleanup_freq=3600.0, verbose=False):
+            cleanup_freq=3600.0, logger=None):
         self.state = state
         self.freq = freq
         self.cleanup_freq = cleanup_freq
-        self.verbose = verbose
+        self.logger = logger
         self.maxrate = maxrate and TokenBucket(rate(maxrate))
 
     def install(self):
@@ -43,8 +45,8 @@ class Polaroid(object):
         self.on_cleanup()
 
     def debug(self, msg):
-        if self.verbose:
-            sys.stderr.write("[%s] %s\n" % (time.asctime(), msg, ))
+        if self.logger:
+            self.logger.debug(msg)
 
     def shutter(self):
         if self.maxrate is None or self.maxrate.can_consume():
@@ -71,13 +73,19 @@ class Polaroid(object):
         self.cancel()
 
 
-def evcam(camera, freq=1.0, maxrate=None, verbose=False):
-    sys.stderr.write(
+def evcam(camera, freq=1.0, maxrate=None, loglevel=0,
+        logfile=None):
+    if not isinstance(loglevel, int):
+        loglevel = conf.LOG_LEVELS[loglevel.upper()]
+    logger = log.setup_logger(loglevel=loglevel,
+                              logfile=logfile,
+                              name="celery.evcam")
+    logger.info(
         "-> evcam: Taking snapshots with %s (every %s secs.)\n" % (
             camera, freq))
     state = State()
     cam = instantiate(camera, state,
-                      freq=freq, maxrate=maxrate, verbose=verbose)
+                      freq=freq, maxrate=maxrate, logger=logger)
     cam.install()
     conn = establish_connection()
     recv = EventReceiver(conn, handlers={"*": state.event})