1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-23 22:51:35 +00:00

move logging setup to logger module

This commit is contained in:
Antoine Beaupré 2015-10-06 12:22:57 -04:00
parent 97189dd25b
commit 2d0dae4e8b
3 changed files with 50 additions and 23 deletions

View file

@ -20,6 +20,7 @@
from . import __version__
from .archive import Archive, ArchiveChecker, CHUNKER_PARAMS
from .compress import Compressor, COMPR_BUFFER
from .logger import setup_logging
from .upgrader import AtticRepositoryUpgrader
from .repository import Repository
from .cache import Cache
@ -524,21 +525,6 @@ def do_help(self, parser, commands, args):
parser.error('No help available on %s' % (args.topic,))
return self.exit_code
def setup_logging(self, args):
logging.raiseExceptions = False
l = logging.getLogger('')
sh = logging.StreamHandler(sys.stderr)
# other formatters will probably want this, but let's remove
# clutter on stderr
#sh.setFormatter(logging.Formatter('%(name)s: %(message)s'))
l.addHandler(sh)
levels = { None: logging.WARNING,
0: logging.WARNING,
1: logging.INFO,
2: logging.DEBUG }
# default to WARNING, -v goes to INFO and -vv to DEBUG
l.setLevel(levels[args.verbose])
def preprocess_args(self, args):
deprecations = [
('--hourly', '--keep-hourly', 'Warning: "--hourly" has been deprecated. Use "--keep-hourly" instead.'),
@ -986,7 +972,7 @@ def run(self, args=None):
help='additional help on TOPIC')
args = parser.parse_args(args or ['-h'])
self.setup_logging(args)
setup_logging(args)
os.umask(args.umask)
RemoteRepository.remote_path = args.remote_path
RemoteRepository.umask = args.umask

19
borg/logger.py Normal file
View file

@ -0,0 +1,19 @@
import logging
import sys
def setup_logging(args, stream=None):
logging.raiseExceptions = False
l = logging.getLogger('')
sh = logging.StreamHandler(stream)
# other formatters will probably want this, but let's remove
# clutter on stderr
#sh.setFormatter(logging.Formatter('%(name)s: %(message)s'))
l.addHandler(sh)
levels = { None: logging.WARNING,
0: logging.WARNING,
1: logging.INFO,
2: logging.DEBUG }
# default to WARNING, -v goes to INFO and -vv to DEBUG
l.setLevel(levels[args.verbose])
return sh,

View file

@ -3,16 +3,38 @@
from StringIO import StringIO
except ImportError:
from io import StringIO
import sys
from mock import Mock
import pytest
def test_mod_logger():
logger = logging.getLogger(__name__)
io = StringIO()
from ..logger import setup_logging
logger = logging.getLogger(__name__)
ch = logging.StreamHandler(io)
ch.setFormatter(logging.Formatter('%(name)s: %(message)s'))
logger.addHandler(ch)
@pytest.fixture()
def io_logger():
io = StringIO()
args = Mock()
args.verbose = 2
assert args.verbose == 2
handler, = setup_logging(args, io)
handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
logger.setLevel(logging.DEBUG)
return io
def test_setup_logging(io_logger):
logger.info('hello world')
assert io.getvalue() == "borg.testsuite.logger: hello world\n"
assert io_logger.getvalue() == "borg.testsuite.logger: hello world\n"
def test_multiple_loggers(io_logger):
logger = logging.getLogger(__name__)
logger.info('hello world 1')
assert io_logger.getvalue() == "borg.testsuite.logger: hello world 1\n"
logger = logging.getLogger('borg.testsuite.logger')
logger.info('hello world 2')
assert io_logger.getvalue() == "borg.testsuite.logger: hello world 1\nborg.testsuite.logger: hello world 2\n"
io_logger.truncate(0)
io_logger.seek(0)
logger = logging.getLogger('borg.testsuite.logger')
logger.info('hello world 2')
assert io_logger.getvalue() == "borg.testsuite.logger: hello world 2\n"