define(['bridge'], function (Bridge) {
    var LogWrapper = {

        log: function () {
            this.write('log', arguments)
        },
        info: function () {
            this.write('info', arguments)
        },
        warn: function () {
            this.write('warn', arguments)
        },
        error: function () {
            this.write('error', arguments)
        },
        write: function (type, args) {

            Bridge.log(type, Array.prototype.slice.call(args));
            OriginalConsole.log.apply(OriginalConsole, args);
        }
    }
    var OriginalConsole = window.console;

    for (var member in window.console) {
        if (!member in LogWrapper) {
            LogWrapper[member] = member
        }
    }

    window.console = LogWrapper;
    console.info('Console output is redirected');

    return LogWrapper;
});