diff --git a/Headphones.py b/Headphones.py index ce67b2b1..1a7c1df7 100755 --- a/Headphones.py +++ b/Headphones.py @@ -101,7 +101,7 @@ def main(): try: file(headphones.PIDFILE, 'w').write("pid\n") except IOError, e: - raise SystemExit("Unable to write PID file: %s [%d]" % (e.strerror, e.errno)) + raise SystemExit("Unable to write PID file: %s [%d]", e.strerror, e.errno) else: logger.warn("Not running in daemon mode. PID file creation disabled.") diff --git a/headphones/__init__.py b/headphones/__init__.py index 3b785efc..ac685164 100644 --- a/headphones/__init__.py +++ b/headphones/__init__.py @@ -38,7 +38,7 @@ SIGNAL = None SYS_PLATFORM = None SYS_ENCODING = None -QUIET = True +QUIET = False VERBOSE = False DAEMON = False CREATEPID = False @@ -720,6 +720,7 @@ def initialize(): # Start the logger, disable console if needed logger.initLogger(console=not QUIET, verbose=VERBOSE) + logger.initLogger(console=not QUIET, verbose=False) if not CACHE_DIR: # Put the cache dir in the data dir for now diff --git a/headphones/logger.py b/headphones/logger.py index 0f2baf98..4a21f3f8 100644 --- a/headphones/logger.py +++ b/headphones/logger.py @@ -55,6 +55,17 @@ def initLogger(console=False, verbose=False): Console logging is only enabled if console is set to True. """ + # Close and remove old handlers. This is required to reinit the loggers + # at runtime + for handler in logger.handlers[:]: + # Just make sure it is cleaned up. + if isinstance(handler, handlers.RotatingFileHandler): + handler.close() + elif isinstance(handler, logging.StreamHandler): + handler.flush() + + logger.removeHandler(handler) + # Configure the logger to accept all messages logger.propagate = False logger.setLevel(logging.DEBUG if verbose else logging.INFO) diff --git a/headphones/webserve.py b/headphones/webserve.py index 6db4c1f3..b4dd0c9a 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -736,6 +736,14 @@ class WebInterface(object): raise cherrypy.HTTPRedirect("logs") clearLogs.exposed = True + def toggleVerbose(self): + headphones.VERBOSE = not headphones.VERBOSE + logger.initLogger(not headphones.QUIET, headphones.VERBOSE) + logger.info("Verbose toggled, set to %s", headphones.VERBOSE) + logger.debug("If you read this message, debug logging is available") + raise cherrypy.HTTPRedirect("logs") + toggleVerbose.exposed = True + def getLog(self,iDisplayStart=0,iDisplayLength=100,iSortCol_0=0,sSortDir_0="desc",sSearch="",**kwargs): iDisplayStart = int(iDisplayStart)