我正在尝试将Log4js-Node添加到运行在Apache上的Node.js服务器上。这是我的密码:
const path = require("path");
const express = require("express");
const log4js = require('log4js');
const app = express();
const logger = log4js.getLogger();
logger.level = "debug";
const port = 443;
log4js.configure({
appenders: { everything: { type: 'file', filename: 'logs.log', flags: 'w' } },
categories: { default: { appenders: ['everything'], level: 'ALL' } }
});
const server = app.listen(port, () => {
logger.debug("listening to requests on port " + port);
});
app.get("/log", (req, res) => {
res.sendFile(path.join(__dirname + "/logs.log"));
});当我在我的计算机上运行Node.js脚本并导航到localhost:443/log时,我看到了我所期望的,如下所示:
2020-03-17T22:50:43.145默认-侦听端口443上的请求
但是,当我在远程服务器上运行代码时,它会崩溃,并在错误页面中得到(部分路径被我替换为“删除”):
应用程序25925输出: at服务器。(移除/索引.27:27:9)
App 25925输出:在Logger。as debug
App 25925输出: at Logger.log Logger.log
App 25925输出: at Logger._log Logger._log
App 25925输出: at Object.send Object.send
App 25925输出: removed/12/lib/node_modules/log4js/lib/clustering.js:97
App 25925输出: at Object。(removed/12/lib/node_modules/log4js/lib/clustering.js:8:13)
我使用的是A2主机,它使用Apache2.4.41。我选择了Node.js 12.9.0和Log4js 6.1.2。在我的计算机和服务器上,package.json应该是相同的,我已经在这两个服务器上运行了npm install。
这仅仅是Log4js和服务器的问题,还是我在某个地方遗漏了什么?
发布于 2020-03-20 05:22:05
这实际上是一个相对简单的解决方法。堆栈跟踪中的最后一个错误引用的路径是一个Log4js模块,它通过Node的“集群”模块实现集群支持。所引用的行"8“是cluster = require("cluster")。它封装在一个try/catch块中,如下所示:
try {
cluster = require("cluster"); //eslint-disable-line
} catch (e) {
debug("cluster module not present");
disabled = true;
}在我的计算机上安装Node.js时附带了“集群”模块,但据我所知,我使用的服务器不支持它。而且,我在我的计算机上使用的Node版本比我在服务器上使用的版本更新了(所以我现在已经在我的机器上安装了12.9 )。我相信较早版本的Node不会费心捕捉异常,并尝试加载集群模块,失败,然后抛出错误。
因此,简单的解决方法是注释掉大部分"try/catch“块,只留下"catch”的内容如下:
// try {
// cluster = require("cluster"); //eslint-disable-line
// } catch (e) {
debug("cluster module not present");
disabled = true;
// }如果有人有更好的解决办法,我愿意接受建议。
发布于 2022-01-19 08:46:33
@skittleswrapper,thx的同样反应,对我来说是有效的。我使用Node.js 14.18.1和log4js 6.3.0。但我想知道什么是这个模块‘集群’的必要,如果我们可以添加到我们的应用程序以其他方式。
https://stackoverflow.com/questions/60733999
复制相似问题