JARS.internal('ModuleLogger', function() {
    'use strict';

    var logLevelMap = {},
        isBundleMap = {},
        messageTemplates = [],
        loggerOptions = {
            tpl: messageTemplates
        };

    function ModuleLogger(module) {
        this._module = module;
    }

    ModuleLogger.addDebug = function(message, isBundleMessage) {
        return addMessage('debug', message, isBundleMessage);
    };

    ModuleLogger.addInfo = function(message, isBundleMessage) {
        return addMessage('info', message, isBundleMessage);
    };

    ModuleLogger.addWarning = function(message, isBundleMessage) {
        return addMessage('warn', message, isBundleMessage);
    };

    ModuleLogger.addError = function(message, isBundleMessage) {
        return addMessage('error', message, isBundleMessage);
    };

    ModuleLogger.prototype = {
        constructor: ModuleLogger,
        /**
         * @access private
         *
         * @memberof JARS~ModuleState#
         *
         * @param {Number} messageType
         * @param {Object} [values]
         */
        log: function(messageType, values) {
            var module = this._module,
                logBundle = isBundleMap[messageType],
                moduleName = module.getName(logBundle),
                context = (logBundle ? 'Bundle' : 'Module') + ':' + moduleName,
                Logger = module.loader.getLogger(),
                level = logLevelMap[messageType] || 'error';

            if (Logger) {
                Logger[level + 'WithContext'](context, messageType, values, loggerOptions);
            }
        },

    };

    function addMessage(logLevel, message, isBundleMessage) {
        var messageType = messageTemplates.push(message) - 1;

        logLevelMap[messageType] = logLevel;
        isBundleMap[messageType] = isBundleMessage;

        return messageType;
    }

    return ModuleLogger;
});

@@ -31,16 +31,34 @@
 function
+ moduleLoggerSetup
 () %7B%0A   
@@ -1159,461 +1159,461 @@
 var 
-module = this._module,%0A                logBundle = isBundleMap%5BmessageType%5D,%0A                moduleName = module.getName(logBundle),%0A                context = (logBundle ? 'Bundle' : 'Module') + ':' + moduleName,%0A                Logger = module.loader.getLogger(),%0A                level = logLevelMap%5BmessageType%5D %7C%7C 'error';%0A%0A            if (Logger) %7B%0A                Logger%5Blevel + 'WithContext'%5D(context, messageType, values, loggerOptions)
+Logger = module.loader.getLogger();%0A%0A            if (Logger) %7B%0A                Logger%5BgetLogMethod(messageType)%5D(getLogContext(this._module, messageType), messageType, values, loggerOptions);%0A            %7D%0A        %7D,%0A%0A    %7D;%0A%0A    function getLogMethod(messageType) %7B%0A        return (logLevelMap%5BmessageType%5D %7C%7C 'error') + 'WithContext';%0A    %7D%0A%0A    function getLogContext(module, messageType) %7B%0A        var logBundle = isBundleMap%5BmessageType%5D
 ;%0A
+%0A
         
     
@@ -1612,32 +1612,89 @@
     
-    %7D%0A        %7D,%0A
+return (logBundle ? 'Bundle' : 'Module') + ':' + module.getName(logBundle);
 %0A    %7D
-;
 %0A%0A  

Add helper functions