diff --git a/packages/wakatime/__about__.py b/packages/wakatime/__about__.py index a4ec680..c799834 100644 --- a/packages/wakatime/__about__.py +++ b/packages/wakatime/__about__.py @@ -1,7 +1,7 @@ __title__ = 'wakatime' __description__ = 'Common interface to the WakaTime api.' __url__ = 'https://github.com/wakatime/wakatime' -__version_info__ = ('4', '0', '11') +__version_info__ = ('4', '0', '12') __version__ = '.'.join(__version_info__) __author__ = 'Alan Hamlett' __author_email__ = 'alan@wakatime.com' diff --git a/packages/wakatime/base.py b/packages/wakatime/base.py index 30186c8..00a7d1e 100644 --- a/packages/wakatime/base.py +++ b/packages/wakatime/base.py @@ -157,8 +157,10 @@ def parseArguments(argv): parser.add_argument('--proxy', dest='proxy', help='optional https proxy url; for example: '+ 'https://user:pass@localhost:8080') - parser.add_argument('--project', dest='project_name', - help='optional project name; auto-discovered project takes priority') + parser.add_argument('--project', dest='project', + help='optional project name') + parser.add_argument('--alternate-project', dest='alternate_project', + help='optional alternate project name; auto-discovered project takes priority') parser.add_argument('--disableoffline', dest='offline', action='store_false', help='disables offline time logging instead of queuing logged time') @@ -444,10 +446,13 @@ def main(argv=None): if not args.notfile: project = find_project(args.targetFile, configs=configs) branch = None - project_name = args.project_name + project_name = args.project if project: branch = project.branch() - project_name = project.name() + if not project_name: + project_name = project.name() + if not project_name: + project_name = args.alternate_project if send_heartbeat( project=project_name, diff --git a/packages/wakatime/logger.py b/packages/wakatime/logger.py index fdae903..3c768cf 100644 --- a/packages/wakatime/logger.py +++ b/packages/wakatime/logger.py @@ -9,7 +9,6 @@ :license: BSD, see LICENSE for more details. """ -import inspect import logging import os import sys @@ -38,33 +37,32 @@ class CustomEncoder(json.JSONEncoder): class JsonFormatter(logging.Formatter): - def setup(self, timestamp, isWrite, targetFile, version, plugin): + def setup(self, timestamp, isWrite, targetFile, version, plugin, verbose): self.timestamp = timestamp self.isWrite = isWrite self.targetFile = targetFile self.version = version self.plugin = plugin + self.verbose = verbose def format(self, record): data = OrderedDict([ ('now', self.formatTime(record, self.datefmt)), ]) - try: - data['package'] = inspect.stack()[9][0].f_globals.get('__package__') - data['lineno'] = inspect.stack()[9][2] - except: - pass data['version'] = self.version data['plugin'] = self.plugin data['time'] = self.timestamp - data['isWrite'] = self.isWrite - data['file'] = self.targetFile + if self.verbose: + data['caller'] = record.pathname + data['lineno'] = record.lineno + data['isWrite'] = self.isWrite + data['file'] = self.targetFile + if not self.isWrite: + del data['isWrite'] data['level'] = record.levelname data['message'] = record.msg if not self.plugin: del data['plugin'] - if not self.isWrite: - del data['isWrite'] return CustomEncoder().encode(data) def formatException(self, exc_info): @@ -90,6 +88,7 @@ def setup_logging(args, version): targetFile=args.targetFile, version=version, plugin=args.plugin, + verbose=args.verbose, ) logger.handlers[0].setFormatter(formatter) return logger @@ -104,6 +103,7 @@ def setup_logging(args, version): targetFile=args.targetFile, version=version, plugin=args.plugin, + verbose=args.verbose, ) handler.setFormatter(formatter) logger.addHandler(handler)