From 7cc6e335a7be56d092fe3c5a5669a1fe5e34eb56 Mon Sep 17 00:00:00 2001 From: Matias Pando Date: Thu, 30 Oct 2014 16:53:30 -0300 Subject: [PATCH] Adding a way to set the log level from the UI --- copay.js | 1 + js/controllers/settings.js | 36 ++++++++++++++++-------------------- js/log.js | 19 +++++++++++++++++-- views/settings.html | 2 +- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/copay.js b/copay.js index 511a3dafd..f3d332743 100644 --- a/copay.js +++ b/copay.js @@ -6,6 +6,7 @@ module.exports.PrivateKey = require('./js/models/PrivateKey'); module.exports.HDPath = require('./js/models/HDPath'); module.exports.HDParams = require('./js/models/HDParams'); module.exports.crypto = require('./js/util/crypto'); +module.exports.logger = require('./js/log'); // components diff --git a/js/controllers/settings.js b/js/controllers/settings.js index b629c459c..65322603d 100644 --- a/js/controllers/settings.js +++ b/js/controllers/settings.js @@ -1,32 +1,28 @@ 'use strict'; + angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $location, controllerUtils, notification) { controllerUtils.redirIfLogged(); + + + + $scope.title = 'Settings'; $scope.defaultLanguage = config.defaultLanguage || 'en'; $scope.insightLivenet = config.network.livenet.url; $scope.insightTestnet = config.network.testnet.url; $scope.defaultLogLevel = config.logLevel || 'log'; + var logLevels = copay.logger.getLevels(); + + $scope.availableLogLevels = []; - //$scope.availableLogLevels = logger.levels; - - $scope.availableLogLevels = { - 'debug': 0, - 'info': 1, - 'log': 2, - 'warn': 3, - 'error': 4, - 'fatal': 5 - }; - - console.log($scope.defaultLogLevel); - console.log($scope.availableLogLevels); - - for (var key in $scope.availableLogLevels) { - console.log("Ele " + key + " -- " + $scope.availableLogLevels[key]) + for (var key in logLevels) { + $scope.availableLogLevels.push({ + 'name': key + }); } $scope.availableStorages = [{ @@ -63,7 +59,7 @@ angular.module('copayApp.controllers').controller('SettingsController', function } for (var ii in $scope.availableLogLevels) { - if ($scope.defaultLogLevel === $scope.availableLogLevels[ii]) { + if ($scope.defaultLogLevel === $scope.availableLogLevels[ii].name) { $scope.selectedLogLevel = $scope.availableLogLevels[ii]; break; } @@ -84,17 +80,17 @@ angular.module('copayApp.controllers').controller('SettingsController', function }, } + var plugins = {}; plugins[$scope.selectedStorage.pluginName] = true; - - logger.setLevel($scope.selectedLogLevel); + copay.logger.setLevel($scope.selectedLogLevel.name); localStorage.setItem('config', JSON.stringify({ network: insightSettings, version: copay.version, defaultLanguage: $scope.selectedLanguage.isoCode, plugins: plugins, - logLevel: $scope.selectedLogLevel, + logLevel: $scope.selectedLogLevel.name, })); // Go home reloading the application diff --git a/js/log.js b/js/log.js index 4b278eebf..1d7c7c776 100644 --- a/js/log.js +++ b/js/log.js @@ -1,6 +1,7 @@ -var config = require('../config'); +var config = config || require('../config'); var _ = require('lodash'); + /** * @desc * A simple logger that wraps the console.log methods when available. @@ -22,6 +23,10 @@ var Logger = function(name) { this.level = 2; }; +Logger.prototype.getLevels = function() { + return levels; +}; + var levels = { 'debug': 0, @@ -112,5 +117,15 @@ Logger.prototype.setLevel = function(level) { */ var logger = new Logger('copay'); -logger.setLevel(config.logLevel); +var error = new Error(); + +var logLevel = config.logLevel; + +if (typeof localStorage !== "undefined" && localStorage.getItem) { + var localConfig = JSON.parse(localStorage.getItem("config")); + if (localConfig && localConfig.logLevel) + logLevel = localConfig.logLevel; +} + +logger.setLevel(logLevel); module.exports = logger; diff --git a/views/settings.html b/views/settings.html index f0c097c16..436218ba7 100644 --- a/views/settings.html +++ b/views/settings.html @@ -36,7 +36,7 @@ Log level -