7

我有一个使用 Raspbian Jessie OS 在 Raspberry Pi 2 上运行的 IoT 项目。

它是一个在 NodeJS (v4) 中运行的 Web 服务器,我正在使用 Winston 登录到 Loggly 的日志服务。当项目通过npm start终端启动时(以“pi”或通过 sudo -s 运行时),一切正常。但是,当项目启动时,日志记录不起作用,我不知道为什么。

为了在启动时启动项目,我创建了一个 etc/init.d 脚本。该项目启动并提供交通服务,除了日志记录之外,一切都很好。我看不到任何错误(尽管没有日志记录没有帮助)。这就是我从 etc/init.d 脚本中启动项目的方式:

/usr/bin/node /var/www/curtains/server.js

我正在使用winston:https ://www.npmjs.com/package/winston 和winston-loggly:https ://www.npmjs.com/package/winston-loggly 。

有什么想法,为什么在启动时启动该过程时日志记录不起作用?

按要求添加winston初始化代码:

var winston = require('winston');
require('winston-loggly');

 winston.add(winston.transports.Loggly, {
    token: "<snip>",
    subdomain: "<snip>",
    tags: ["tag", ip.address()],
    json:true
});

winston.log('info',"Server.js starting up");
4

1 回答 1

2

当你运行时npm start,节点会在你的 package.json 文件中寻找一个脚本对象,并运行与该start键相关的命令。

在您的init.d脚本中,您没有运行npm start,而只是运行节点并将您的server.js文件作为第一个参数传递(它将运行该文件)。

很可能start需要脚本中的某些内容才能正确运行日志记录。要解决此问题,您可以:

  • 在您的init.d脚本中,cwd到您的项目根目录,然后运行npm start​​.
  • 查看您的脚本package.json以查看您的start脚本还在做什么,并将等效内容添加到您的init.d脚本中。
于 2016-02-15T12:39:28.950 回答