'use strict'; angular.module('dssWebApp') .factory('logger', function ($log) { var service = { getLogFn: getLogFn, log: log, logError: logError, logSuccess: logSuccess, logWarning: logWarning }; return service; function getLogFn(moduleId, fnName) { fnName = fnName || 'log'; switch (fnName.toLowerCase()) { // convert aliases case 'success': fnName = 'logSuccess'; break; case 'error': fnName = 'logError'; break; case 'warn': fnName = 'logWarning'; break; case 'warning': fnName = 'logWarning'; break; } var logFn = service[fnName] || service.log; return function (msg, data, showToast) { logFn(msg, data, moduleId, (showToast === undefined) ? true : showToast); }; } function log(message, data, source, showToast) { logIt(message, data, source, showToast, 'info'); } function logWarning(message, data, source, showToast) { logIt(message, data, source, showToast, 'warning'); } function logSuccess(message, data, source, showToast) { logIt(message, data, source, showToast, 'success'); } function logError(message, data, source, showToast) { logIt(message, data, source, showToast, 'error'); } function logIt(message, data, source, showToast, toastType) { var write = (toastType === 'error') ? $log.error : $log.log; source = source ? '[' + source + '] ' : ''; write(source, message, data); if (showToast) { if (toastType === 'error') { toastr.error(message); } else if (toastType === 'warning') { toastr.warning(message); } else if (toastType === 'success') { toastr.success(message); } else { toastr.info(message); } } } });