def initLogging(self):
        """ Setup logging so that messages are proxied to Python.
        """
        if window.console.ori_log:
            return  # already initialized the loggers
        # Keep originals
        window.console.ori_log = window.console.log
        window.console.ori_info = window.console.info or window.console.log
        window.console.ori_warn = window.console.warn or window.console.log
        window.console.ori_error = window.console.error or window.console.log
        
        def log(self, msg):
            window.console.ori_log(msg)
            if window.flexx.ws is not None:
                window.flexx.ws.send("PRINT " + msg)
        def info(self, msg):
            window.console.ori_info(msg)
            if window.flexx.ws is not None:
                window.flexx.ws.send("INFO " + msg)
        def warn(self, msg):
            window.console.ori_warn(msg)
            if window.flexx.ws is not None:
                window.flexx.ws.send("WARN " + msg)
        def error(self, msg):
            window.console.ori_error(msg)
            if window.flexx.ws is not None:
                window.flexx.ws.send("ERROR " + msg)
        def on_error(self, evt):
            msg = evt.message
            if evt.error.stack:
                stack = [x.replace('@', ' @ ') if '.js' in x else x.split('@')[0]
                         for x in evt.error.stack.splitlines()]
                msg += '\n' + '\n'.join(stack)
            elif evt.message and evt.lineno:  # message, url, linenumber (not in nodejs)
                msg += "\nIn %s:%i" % (evt.filename, evt.lineno)
            window.console.error(msg)
            evt.preventDefault()  # Don't do the standard error 
        # Set new versions
        window.console.log = log
        window.console.info = info
        window.console.warn = warn
        window.console.error = error
        # Create error handler, so that JS errors get into Python
        if self.nodejs:
            window.process.on('uncaughtException', on_error, False)
        else:
            window.addEventListener('error', on_error, False)
dataset/ETHPy150Open zoofIO/flexx/flexx/app/clientcore.py/FlexxJS.initLogging/original