dc.js Source: logger.js (original) (raw)
/**
Provides basis logging and deprecation utilities
@class logger
@memberof dc
@returns {dc.logger} */ dc.logger = (function () {
var _logger = {};
/**
- Enable debug level logging. Set to
false
by default. - @name enableDebugLog
- @memberof dc.logger
- @instance */ _logger.enableDebugLog = false;
/**
Put a warning message to console
@method warn
@memberof dc.logger
@instance
@example
dc.logger.warn('Invalid use of .tension on CurveLinear');
@param {String} [msg]
@returns {dc.logger} */ _logger.warn = function (msg) { if (console) { if (console.warn) { console.warn(msg); } else if (console.log) { console.log(msg); } }
return _logger;
};
var _alreadyWarned = {};
/**
Put a warning message to console. It will warn only on unique messages.
@method warnOnce
@memberof dc.logger
@instance
@example
dc.logger.warnOnce('Invalid use of .tension on CurveLinear');
@param {String} [msg]
@returns {dc.logger} */ _logger.warnOnce = function (msg) { if (!_alreadyWarned[msg]) { _alreadyWarned[msg] = true; dc.logger.warn(msg); }
return _logger;
};
/**
Put a debug message to console. It is controlled by
dc.logger.enableDebugLog
@method debug
@memberof dc.logger
@instance
@example
dc.logger.debug('Total number of slices: ' + numSlices);
@param {String} [msg]
@returns {dc.logger} */ _logger.debug = function (msg) { if (_logger.enableDebugLog && console) { if (console.debug) { console.debug(msg); } else if (console.log) { console.log(msg); } }
return _logger;
};
/**
- Used to deprecate a function. It will return a wrapped version of the function, which will
- will issue a warning when invoked. The warning will be issued only once.
- @method deprecate
- @memberof dc.logger
- @instance
- @example
- _chart.interpolate = dc.logger.deprecate(function (interpolate) {
- if (!arguments.length) {
return _interpolate;
- }
- _interpolate = interpolate;
- return _chart;
- }, 'dc.lineChart.interpolate has been deprecated since version 3.0 use dc.lineChart.curve instead');
- @param {Function} [fn]
- @param {String} [msg]
- @returns {Function} */ _logger.deprecate = function (fn, msg) { // Allow logging of deprecation var warned = false; function deprecated () { if (!warned) { _logger.warn(msg); warned = true; } return fn.apply(this, arguments); } return deprecated; };
/**
- Used to provide an informational message for a function. It will return a wrapped version of
- the function, which will will issue a messsage with stack when invoked. The message will be
- issued only once.
- @method annotate
- @memberof dc.logger
- @instance
- @example
- _chart.interpolate = dc.logger.annotate(function (interpolate) {
- if (!arguments.length) {
return _interpolate;
- }
- _interpolate = interpolate;
- return _chart;
- }, 'dc.lineChart.interpolate has been annotated since version 3.0 use dc.lineChart.curve instead');
- @param {Function} [fn]
- @param {String} [msg]
- @returns {Function} */ _logger.annotate = function (fn, msg) { // Allow logging of deprecation var warned = false; function annotated () { if (!warned) { console.groupCollapsed(msg); console.trace(); console.groupEnd(); warned = true; } return fn.apply(this, arguments); } return annotated; };
return _logger;
- Enable debug level logging. Set to
})();