【问题标题】:How to make this code run in modern nodejs?如何让这段代码在现代 nodejs 中运行?
【发布时间】:2020-03-06 06:21:56
【问题描述】:

我正在尝试实现一个简单的 Web 界面,我可以在其中看到我的日志文件的 do tail -f。

找到下面的链接

https://thoughtbot.com/blog/real-time-online-activity-monitor-example-with-node-js-and-websocket

它似乎很旧,与现代node.j不兼容。

我尝试浏览 node.j` 文档,但无法解决此问题。 创建子进程会导致一些问题。

var filename = process.argv[2];

if (!filename)
  return sys.puts("Usage: node watcher.js filename");

var tail = process.createChildProcess("tail", ["-f", filename]);
console.log("start tailing");

tail.addListener("output", function (data) {
  console(data);
});


var http = require("http");
http.createServer(function(req,res){
  res.sendHeader(200,{"Content-Type": "text/plain"});
  tail.addListener("output", function (data) {
    res.sendBody(data);
  });
}).listen(8000);

我想将此tailf'd 日志发送到另一台服务器,该服务器将运行nodejs 应用程序来读取它。 有人可以帮帮我吗?

【问题讨论】:

    标签: javascript node.js linux logging websocket


    【解决方案1】:

    我已经搜索了整个 nodejs 文档,但我没有找到任何有 process.createChildProcess() 的版本。

    但是,您可以使用 child-process 内置模块替换它:

    const filename = process.argv[2];
    
    if (!filename){
      console.log("Usage: node watcher.js filename");
      process.exit(0)
    }
    
    const child = require('child-process')
    
    const tail = child.exec("tail", ["-f", filename],{shell:true});
    console.log("start tailing");
    
    tail.stdout.on("data", function (data) {
      console.log(data);
    });
    
    
    const http = require("http");
    http.createServer(function(req,res){
      res.writeHead(200,{"Content-Type": "text/plain"});
      tail.stdout.on("data", function (data) {
        res.write(data);
      });
    }).listen(8000);
    

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 1970-01-01
      • 2017-04-25
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      相关资源
      最近更新 更多