我正在尝试实现一个简单的Web界面,从中可以看到日志文件的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应用程序以读取此信息。 有人可以帮我吗?
答案 0 :(得分:0)
我已经搜索了整个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);