diff options
| -rw-r--r-- | src/leap/bitmask/app.py | 105 | ||||
| -rw-r--r-- | src/leap/bitmask/backend_app.py | 0 | ||||
| -rw-r--r-- | src/leap/bitmask/frontend_app.py | 0 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/loggerwindow.py | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/__init__.py | 3 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/leap_log_handler.py (renamed from src/leap/bitmask/util/leap_log_handler.py) | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/log_silencer.py (renamed from src/leap/bitmask/util/log_silencer.py) | 0 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/streamtologger.py (renamed from src/leap/bitmask/util/streamtologger.py) | 0 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/tests/test_leap_log_handler.py (renamed from src/leap/bitmask/util/tests/test_leap_log_handler.py) | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/tests/test_streamtologger.py (renamed from src/leap/bitmask/util/tests/test_streamtologger.py) | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/logs/utils.py | 92 | ||||
| -rw-r--r-- | src/leap/bitmask/util/__init__.py | 5 | 
13 files changed, 109 insertions, 106 deletions
| diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index 05f81f0b..e965604a 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -39,7 +39,6 @@  # M:::::::::::~NMMM7???7MMMM:::::::::::::::::::::::NMMMI??I7MMMM:::::::::::::M  # M::::::::::::::7MMMMMMM+:::::::::::::::::::::::::::?MMMMMMMZ:::::::::::::::M  #                (thanks to: http://www.glassgiant.com/ascii/) -import logging  import signal  import sys  import os @@ -50,10 +49,7 @@ from PySide import QtCore, QtGui  from leap.bitmask import __version__ as VERSION  from leap.bitmask.util import leap_argparse -from leap.bitmask.util import log_silencer, LOG_FORMAT -from leap.bitmask.util.leap_log_handler import LeapLogHandler -from leap.bitmask.util.streamtologger import StreamToLogger -from leap.bitmask.platform_init import IS_WIN +from leap.bitmask.logs.utils import get_logger  from leap.bitmask.services.mail import plumber  from leap.common.events import server as event_server  from leap.mail import __version__ as MAIL_VERSION @@ -89,90 +85,6 @@ def sigterm_handler(*args, **kwargs):      mainwindow.quit() -def add_logger_handlers(debug=False, logfile=None, replace_stdout=True): -    """ -    Create the logger and attach the handlers. - -    :param debug: the level of the messages that we should log -    :type debug: bool -    :param logfile: the file name of where we should to save the logs -    :type logfile: str -    :return: the new logger with the attached handlers. -    :rtype: logging.Logger -    """ -    # TODO: get severity from command line args -    if debug: -        level = logging.DEBUG -    else: -        level = logging.WARNING - -    # Create logger and formatter -    logger = logging.getLogger(name='leap') -    logger.setLevel(level) -    formatter = logging.Formatter(LOG_FORMAT) - -    # Console handler -    try: -        import coloredlogs -        console = coloredlogs.ColoredStreamHandler(level=level) -    except ImportError: -        console = logging.StreamHandler() -        console.setLevel(level) -        console.setFormatter(formatter) -        using_coloredlog = False -    else: -        using_coloredlog = True - -    if using_coloredlog: -        replace_stdout = False - -    silencer = log_silencer.SelectiveSilencerFilter() -    console.addFilter(silencer) -    logger.addHandler(console) -    logger.debug('Console handler plugged!') - -    # LEAP custom handler -    leap_handler = LeapLogHandler() -    leap_handler.setLevel(level) -    leap_handler.addFilter(silencer) -    logger.addHandler(leap_handler) -    logger.debug('Leap handler plugged!') - -    # File handler -    if logfile is not None: -        logger.debug('Setting logfile to %s ', logfile) -        fileh = logging.FileHandler(logfile) -        fileh.setLevel(logging.DEBUG) -        fileh.setFormatter(formatter) -        fileh.addFilter(silencer) -        logger.addHandler(fileh) -        logger.debug('File handler plugged!') - -    if replace_stdout: -        replace_stdout_stderr_with_logging(logger) - -    return logger - - -def replace_stdout_stderr_with_logging(logger): -    """ -    Replace: -        - the standard output -        - the standard error -        - the twisted log output -    with a custom one that writes to the logger. -    """ -    # Disabling this on windows since it breaks ALL THE THINGS -    # The issue for this is #4149 -    if not IS_WIN: -        sys.stdout = StreamToLogger(logger, logging.DEBUG) -        sys.stderr = StreamToLogger(logger, logging.ERROR) - -        # Replace twisted's logger to use our custom output. -        from twisted.python import log -        log.startLogging(sys.stdout) - -  def do_display_version(opts):      """      Display version and exit. @@ -214,6 +126,14 @@ def main():      mail_logfile = opts.mail_log_file      start_hidden = opts.start_hidden +    replace_stdout = True +    if opts.repair or opts.import_maildir: +        # We don't want too much clutter on the comand mode +        # this could be more generic with a Command class. +        replace_stdout = False + +    logger = get_logger(debug, logfile, replace_stdout) +      #############################################################      # Given how paths and bundling works, we need to delay the imports      # of certain parts that depend on this path settings. @@ -232,13 +152,6 @@ def main():      BaseConfig.standalone = standalone -    replace_stdout = True -    if opts.repair or opts.import_maildir: -        # We don't want too much clutter on the comand mode -        # this could be more generic with a Command class. -        replace_stdout = False -    logger = add_logger_handlers(debug, logfile, replace_stdout) -      # ok, we got logging in place, we can satisfy mail plumbing requests      # and show logs there. it normally will exit there if we got that path.      do_mail_plumbing(opts) diff --git a/src/leap/bitmask/backend_app.py b/src/leap/bitmask/backend_app.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/leap/bitmask/backend_app.py diff --git a/src/leap/bitmask/frontend_app.py b/src/leap/bitmask/frontend_app.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/leap/bitmask/frontend_app.py diff --git a/src/leap/bitmask/gui/loggerwindow.py b/src/leap/bitmask/gui/loggerwindow.py index f19b172f..3a8354b1 100644 --- a/src/leap/bitmask/gui/loggerwindow.py +++ b/src/leap/bitmask/gui/loggerwindow.py @@ -27,7 +27,7 @@ from twisted.internet import threads  from ui_loggerwindow import Ui_LoggerWindow  from leap.bitmask.util.constants import PASTEBIN_API_DEV_KEY -from leap.bitmask.util.leap_log_handler import LeapLogHandler +from leap.bitmask.logs.leap_log_handler import LeapLogHandler  from leap.bitmask.util import pastebin  from leap.common.check import leap_assert, leap_assert_type diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index a3b81fde..c61b7dc9 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -52,7 +52,7 @@ from leap.bitmask.services import EIP_SERVICE, MX_SERVICE  from leap.bitmask.util import make_address  from leap.bitmask.util.keyring_helpers import has_keyring -from leap.bitmask.util.leap_log_handler import LeapLogHandler +from leap.bitmask.logs.leap_log_handler import LeapLogHandler  if IS_WIN:      from leap.bitmask.platform_init.locks import WindowsLock diff --git a/src/leap/bitmask/logs/__init__.py b/src/leap/bitmask/logs/__init__.py new file mode 100644 index 00000000..0516b304 --- /dev/null +++ b/src/leap/bitmask/logs/__init__.py @@ -0,0 +1,3 @@ +# levelname length == 8, since 'CRITICAL' is the longest +LOG_FORMAT = ('%(asctime)s - %(levelname)-8s - ' +              'L#%(lineno)-4s : %(name)s:%(funcName)s() - %(message)s') diff --git a/src/leap/bitmask/util/leap_log_handler.py b/src/leap/bitmask/logs/leap_log_handler.py index 807e53d4..24141638 100644 --- a/src/leap/bitmask/util/leap_log_handler.py +++ b/src/leap/bitmask/logs/leap_log_handler.py @@ -21,7 +21,7 @@ import logging  from PySide import QtCore -from leap.bitmask.util import LOG_FORMAT +from leap.bitmask.logs import LOG_FORMAT  class LogHandler(logging.Handler): diff --git a/src/leap/bitmask/util/log_silencer.py b/src/leap/bitmask/logs/log_silencer.py index 56b290e4..56b290e4 100644 --- a/src/leap/bitmask/util/log_silencer.py +++ b/src/leap/bitmask/logs/log_silencer.py diff --git a/src/leap/bitmask/util/streamtologger.py b/src/leap/bitmask/logs/streamtologger.py index 25a06718..25a06718 100644 --- a/src/leap/bitmask/util/streamtologger.py +++ b/src/leap/bitmask/logs/streamtologger.py diff --git a/src/leap/bitmask/util/tests/test_leap_log_handler.py b/src/leap/bitmask/logs/tests/test_leap_log_handler.py index 518fd35b..20b09aef 100644 --- a/src/leap/bitmask/util/tests/test_leap_log_handler.py +++ b/src/leap/bitmask/logs/tests/test_leap_log_handler.py @@ -24,7 +24,7 @@ except ImportError:  import logging -from leap.bitmask.util.leap_log_handler import LeapLogHandler +from leap.bitmask.logs.leap_log_handler import LeapLogHandler  from leap.bitmask.util.pyside_tests_helper import BasicPySlotCase  from leap.common.testing.basetest import BaseLeapTest diff --git a/src/leap/bitmask/util/tests/test_streamtologger.py b/src/leap/bitmask/logs/tests/test_streamtologger.py index fc97b794..9bbadde8 100644 --- a/src/leap/bitmask/util/tests/test_streamtologger.py +++ b/src/leap/bitmask/logs/tests/test_streamtologger.py @@ -26,7 +26,7 @@ except ImportError:  import logging  import sys -from leap.bitmask.util.streamtologger import StreamToLogger +from leap.bitmask.logs.streamtologger import StreamToLogger  from leap.common.testing.basetest import BaseLeapTest diff --git a/src/leap/bitmask/logs/utils.py b/src/leap/bitmask/logs/utils.py new file mode 100644 index 00000000..06959c45 --- /dev/null +++ b/src/leap/bitmask/logs/utils.py @@ -0,0 +1,92 @@ +import logging +import sys + +from leap.bitmask.logs import LOG_FORMAT +from leap.bitmask.logs.log_silencer import SelectiveSilencerFilter +from leap.bitmask.logs.leap_log_handler import LeapLogHandler +from leap.bitmask.logs.streamtologger import StreamToLogger +from leap.bitmask.platform_init import IS_WIN + + +def get_logger(debug=False, logfile=None, replace_stdout=True): +    """ +    Create the logger and attach the handlers. + +    :param debug: the level of the messages that we should log +    :type debug: bool +    :param logfile: the file name of where we should to save the logs +    :type logfile: str +    :return: the new logger with the attached handlers. +    :rtype: logging.Logger +    """ +    # TODO: get severity from command line args +    if debug: +        level = logging.DEBUG +    else: +        level = logging.WARNING + +    # Create logger and formatter +    logger = logging.getLogger(name='leap') +    logger.setLevel(level) +    formatter = logging.Formatter(LOG_FORMAT) + +    # Console handler +    try: +        import coloredlogs +        console = coloredlogs.ColoredStreamHandler(level=level) +    except ImportError: +        console = logging.StreamHandler() +        console.setLevel(level) +        console.setFormatter(formatter) +        using_coloredlog = False +    else: +        using_coloredlog = True + +    if using_coloredlog: +        replace_stdout = False + +    silencer = SelectiveSilencerFilter() +    console.addFilter(silencer) +    logger.addHandler(console) +    logger.debug('Console handler plugged!') + +    # LEAP custom handler +    leap_handler = LeapLogHandler() +    leap_handler.setLevel(level) +    leap_handler.addFilter(silencer) +    logger.addHandler(leap_handler) +    logger.debug('Leap handler plugged!') + +    # File handler +    if logfile is not None: +        logger.debug('Setting logfile to %s ', logfile) +        fileh = logging.FileHandler(logfile) +        fileh.setLevel(logging.DEBUG) +        fileh.setFormatter(formatter) +        fileh.addFilter(silencer) +        logger.addHandler(fileh) +        logger.debug('File handler plugged!') + +    if replace_stdout: +        replace_stdout_stderr_with_logging(logger) + +    return logger + + +def replace_stdout_stderr_with_logging(logger): +    """ +    Replace: +        - the standard output +        - the standard error +        - the twisted log output +    with a custom one that writes to the logger. +    """ +    # Disabling this on windows since it breaks ALL THE THINGS +    # The issue for this is #4149 +    if not IS_WIN: +        sys.stdout = StreamToLogger(logger, logging.DEBUG) +        sys.stderr = StreamToLogger(logger, logging.ERROR) + +        # Replace twisted's logger to use our custom output. +        from twisted.python import log +        log.startLogging(sys.stdout) diff --git a/src/leap/bitmask/util/__init__.py b/src/leap/bitmask/util/__init__.py index 2b2cd874..c35be99e 100644 --- a/src/leap/bitmask/util/__init__.py +++ b/src/leap/bitmask/util/__init__.py @@ -28,11 +28,6 @@ from leap.common.config import get_path_prefix as common_get_path_prefix  # We'll give your money back if it does not alleviate the eye strain, at least. -# levelname length == 8, since 'CRITICAL' is the longest -LOG_FORMAT = ('%(asctime)s - %(levelname)-8s - ' -              'L#%(lineno)-4s : %(name)s:%(funcName)s() - %(message)s') - -  def first(things):      """      Return the head of a collection. | 
