nodejs 将 console.log 打印到 http

use*_*478 3 http node.js console.log

我在 NodeJS 中制作了一个具有多种条件的脚本。我想使用 NodeJS 服务器将 console.log 导出/打印到网页。

function myfunction() {
    app('Some text', 'ALERT!', function(err, remaining) {
        if (err) throw err;
        console.log('Some text.');
Run Code Online (Sandbox Code Playgroud)

这可能吗?我到处找。

非常感谢!

sha*_*ncs 5

为了将console.log(...)结果导出/打印到网页,您可以覆盖console.log并使其在服务器控制台中打印之前发出消息。然后消息将使用 Web Socket 发送到浏览器并在页面中打印/使用。

下面列出了示例代码。

服务器端:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3000;

var events = require('events');
var eventEmitter = new events.EventEmitter();

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

eventEmitter.on('logging', function(message) {
  io.emit('log_message', message);
});

http.listen(port, function(){
  console.log('listening on *:' + port);
});

// Override console.log
var originConsoleLog = console.log;
console.log = function(data) {
  eventEmitter.emit('logging', data);
  originConsoleLog(data);
};

// code for test.
setInterval(function() {
  console.log('X: ' + Math.random());
}, 2000);
Run Code Online (Sandbox Code Playgroud)

浏览器端:

<!doctype html>
<html>
  <head>
    <title>Example</title>
  </head>
  <body>
    <ul id="messages"></ul>
    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      $(function () {
        var socket = io();
        socket.on('log_message', function(msg){
          $('#messages').append($('<li>').text(msg));
        });
      });
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)