From ae947cd5f2d69e40185db6c0252e60a71934e6d8 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Thu, 24 Mar 2016 11:53:00 +0100 Subject: [PATCH] Logs: added log level customization --- .../main/home/tabs/LogsController.js | 20 ++++++++++++--- app/js/lib/conf/i18n/en.json | 5 ++++ app/styles/main.styl | 25 ++++++++++++++++++- app/views/main/home/tabs/logs.jade | 16 +++++++++++- 4 files changed, 61 insertions(+), 5 deletions(-) diff --git a/app/js/controllers/main/home/tabs/LogsController.js b/app/js/controllers/main/home/tabs/LogsController.js index 30f5640..fb8307b 100644 --- a/app/js/controllers/main/home/tabs/LogsController.js +++ b/app/js/controllers/main/home/tabs/LogsController.js @@ -11,6 +11,21 @@ module.exports = ($scope, ws, UIUtils) => { $scope.logs = _.range(0, $scope.logsSize).map(() => ""); $scope.logsString = ""; $scope.follow = true; + $scope.levels = { + error: localStorage.getItem('log_error') == "true", + warn: localStorage.getItem('log_warn') == "true", + info: localStorage.getItem('log_info') == "true", + debug: localStorage.getItem('log_debug') == "true", + trace: localStorage.getItem('log_trace') == "true" + }; + + _.keys($scope.levels).map((level) => { + $scope.$watch('levels.' + level, (newValue) => { + localStorage.setItem('log_' + level, newValue); + $scope.logs.splice(0, $scope.logs.length); + ws.send(); + }); + }); $scope.$watch('logsSize', () => { addLogs({ value: [] }, true); @@ -21,16 +36,15 @@ module.exports = ($scope, ws, UIUtils) => { function addLogs(res, autoDigest) { if (!$scope.pause) { - let newlogs = res.value; + let newlogs = _.filter(res.value, (log) => $scope.levels[log.level]); // Add at max LOGS_FLOW_SIZE new lines newlogs.splice(0, Math.max(0, newlogs.length - $scope.logsSize)); // Add just enough space for incoming logs $scope.logs.splice(0, Math.max(0, $scope.logs.length + newlogs.length - $scope.logsSize)); for (let i = 0, len = newlogs.length; i < len; i++) { let log = newlogs[i]; - $scope.logs.push(log.msg); + $scope.logs.push(log); } - $scope.logsString = $scope.logs.join('\n'); if (!autoDigest) { $scope.$apply(); } diff --git a/app/js/lib/conf/i18n/en.json b/app/js/lib/conf/i18n/en.json index 5034431..a297a97 100644 --- a/app/js/lib/conf/i18n/en.json +++ b/app/js/lib/conf/i18n/en.json @@ -89,6 +89,11 @@ "home.tabs.logs": "Logs", "home.tabs.logs.follow.logs": "Follow logs", "home.tabs.logs.pause.logs": "Pause logs", + "home.tabs.logs.level.error": "Error", + "home.tabs.logs.level.warn": "Warning", + "home.tabs.logs.level.info": "Info", + "home.tabs.logs.level.debug": "Debug", + "home.tabs.logs.level.trace": "Trace", "sync.title": "Synchronize", "sync.message": "Your node will be synchronized with an existing currency: just enter technical details about a node to sync with it.", "sync.host": "Host", diff --git a/app/styles/main.styl b/app/styles/main.styl index 56f3588..8eaed5e 100644 --- a/app/styles/main.styl +++ b/app/styles/main.styl @@ -133,9 +133,32 @@ blockquote font-size 12px max-height 600px +#logs p + line-height 21px + margin-top 0 + margin-bottom 0 + #follow-logs float right .logs label - margin-right 30px \ No newline at end of file + margin-right 30px + +.log-level.info + color: blue + +.log-level.warn + color: #C9C826 + +.log-level.error + color: red + +.log-level.debug + color: cyan + +.log-level.trace + color: #d0f + +.log-time + color: #888888 \ No newline at end of file diff --git a/app/views/main/home/tabs/logs.jade b/app/views/main/home/tabs/logs.jade index 5af9fbf..53235d8 100644 --- a/app/views/main/home/tabs/logs.jade +++ b/app/views/main/home/tabs/logs.jade @@ -7,7 +7,21 @@ label(for="follow-logs") {{ 'home.tabs.logs.follow.logs' | translate }} input#pause-logs.filled-in(type="checkbox" ng-model="pause") label(for="pause-logs") {{ 'home.tabs.logs.pause.logs' | translate }} + input#level-error.filled-in(type="checkbox" ng-model="levels.error") + label(for="level-error") {{ 'home.tabs.logs.level.error' | translate }} + input#level-warn.filled-in(type="checkbox" ng-model="levels.warn") + label(for="level-warn") {{ 'home.tabs.logs.level.warn' | translate }} + input#level-info.filled-in(type="checkbox" ng-model="levels.info") + label(for="level-info") {{ 'home.tabs.logs.level.info' | translate }} + input#level-debug.filled-in(type="checkbox" ng-model="levels.debug") + label(for="level-debug") {{ 'home.tabs.logs.level.debug' | translate }} + input#level-trace.filled-in(type="checkbox" ng-model="levels.trace") + label(for="level-trace") {{ 'home.tabs.logs.level.trace' | translate }} p {{ 'graphs.blockchain.range' | translate }} .range-field input(type="range" min="10" max="10000" ng-model="logsSize" ng-mouseup="changeSize()") - pre#logs {{ logsString }} + pre#logs + p(ng-repeat="log in logs track by $index") + span.log-time {{ log.timestamp }} + span.log-level(class="{{ log.level }}") {{ log.level }} + span {{ log.msg }} -- GitLab