Mercurial > hg > dml-open-vis
diff src/DML/MainVisBundle/Resources/assets/marionette/App.10-logging.js @ 0:493bcb69166c
added public content
author | Daniel Wolff |
---|---|
date | Tue, 09 Feb 2016 20:54:02 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DML/MainVisBundle/Resources/assets/marionette/App.10-logging.js Tue Feb 09 20:54:02 2016 +0100 @@ -0,0 +1,62 @@ +"use strict"; + +/* + * Logging is controlled by Logger library. Each module has got its own named logger, + * the app has its own named logger too (App.logger) + */ +App.addInitializer(function(options){ + // Default log level + Logger.setLevel( + // Logger.ERROR + Logger.WARN + // Logger.INFO + // Logger.DEBUG + ); + + // App logger + App.logger = Logger.get("App"); + App.logger.setLevel(Logger.DEBUG); + + // Replace the default handle of the Logger to prepend time coordinate and the name of the logger + // Based on a native setHandler in js-logger (time, time diff and logger name are prepended) + var previousLogTime = null; + Logger.setHandler(function (originalArguments, context) { + var hdlr = console.log; + var messages = Array.prototype.slice.call(originalArguments); + + // Prepend the logger's name to the log message for easy identification. + if (context.name) { + messages.unshift(_.str.pad(_.str.sprintf("[%s]", context.name), 25, " ", "right")); + } + // Prepend time diff + var logDate = new Date(); + var logTime = logDate.getTime(); + if (previousLogTime && logTime - previousLogTime < 3000) { + messages.unshift(_.str.sprintf(" %4d", logTime - previousLogTime )); + } else { + messages.unshift(" "); + } + messages.unshift(_.str.sprintf("%s.%03d", logDate.toTimeString().slice(0, 8),logTime % 1000)); + previousLogTime = logTime; + + // Delegate through to custom warn/error loggers if present on the console. + if (context.level === Logger.WARN && console.warn) { + hdlr = console.warn; + } else if (context.level === Logger.ERROR && console.error) { + hdlr = console.error; + } else if (context.level === Logger.INFO && console.info) { + hdlr = console.info; + } + + // Support for IE8+ (and other, slightly more sane environments) + Function.prototype.apply.call(hdlr, console, messages); + }); + + // Log all errors in code (unless jasmine is on) + if (!options.enableJasmine) { + window.onerror = function(message, file, line) { + App.logger.error("[unhandled]", message, file, line); + }; + } + +});