diff --git a/BigStash/base.py b/BigStash/base.py index 3810154..e3a26fe 100644 --- a/BigStash/base.py +++ b/BigStash/base.py @@ -1,5 +1,8 @@ import time import logging +import logging.handlers +import os +import os.path from BigStash import __version__ from .conf import BigStashAPISettings @@ -62,9 +65,27 @@ def __init__(self, auth=None, settings=None, headers=None, def setup_logging(cls, settings): level = getattr(logging, settings['log_level']) logging.basicConfig(level=level) + for h in logging.getLogger().handlers: + h.level = level requests_log = logging.getLogger("requests.packages.urllib3") requests_log.setLevel(level) requests_log.propagate = True + logdir = settings.get_config_file('logs') + if not os.path.exists(logdir): + os.makedirs(logdir) + if not os.path.isdir(logdir): + raise Exception("Fatal error: {} is not a directory".format( + logdir)) + bgstlog = logging.getLogger('bigstash') + bgstlog.setLevel(logging.INFO) + bgstlog.propagate = True + fname = os.path.join(logdir, 'bigstash') + handler = logging.handlers.RotatingFileHandler( + fname, maxBytes=10000, backupCount=5) + formatter = logging.Formatter( + '%(asctime)s - %(name)s - %(levelname)s - %(message)s') + handler.setFormatter(formatter) + bgstlog.addHandler(handler) if level == logging.DEBUG: from requests.packages.urllib3.connection import HTTPConnection HTTPConnection.debuglevel = 1 diff --git a/BigStash/upload.py b/BigStash/upload.py index 8ba8e51..0c3132b 100644 --- a/BigStash/upload.py +++ b/BigStash/upload.py @@ -280,9 +280,12 @@ def refresh(u): err = "error" if e.filename is not None: err = e.filename - print("{}: {}".format(err, e.strerror)) + msg = "{}: {}".format(err, e.strerror) + log.warn(msg, exc_info=True) + print(msg) sys.exit(3) except BigStashError as e: + log.warn("oops", exc_info=True) print(e) sys.exit(2) except Exception as e: diff --git a/setup.py b/setup.py index 16242ed..11e990e 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,7 @@ def read(fname): cmdclass=versioneer.get_cmdclass(), install_requires=install_requires, extras_require={ - 'dev': dev_requires, + 'dev': dev_requires }, entry_points={ 'console_scripts': ['bgst=BigStash.upload:main']