1

我正在尝试使用 Sails.js 设置 Rollbar.com 异常监控。

我已经查看了他们的“Node.js 的滚动条通知程序”部分。到目前为止,我还无法让它运行。

我假设我需要以app.js某种方式更新文件,但在启动或登录 Rollbar 时没有看到任何错误。

任何提示都会很棒!

这是我的副本app.js

/**
 * app.js
 *
 * Use `app.js` to run your app without `sails lift`.
 * To start the server, run: `node app.js`.
 *
 * This is handy in situations where the sails CLI is not relevant or useful.
 *
 * For example:
 *   => `node app.js`
 *   => `forever start app.js`
 *   => `node debug app.js`
 *   => `modulus deploy`
 *   => `heroku scale`
 *
 *
 * The same command-line arguments are supported, e.g.:
 * `node app.js --silent --port=80 --prod`
 */

// Ensure we're in the project directory, so relative paths work as expected
// no matter where we actually lift from.
process.chdir(__dirname);

// Ensure a "sails" can be located:
(function() {
  var sails;
  try {
    sails = require('sails');
  } catch (e) {
    console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.');
    console.error('To do that, run `npm install sails`');
    console.error('');
    console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.');
    console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,');
    console.error('but if it doesn\'t, the app will run with the global sails instead!');
    return;
  }

  // Try to get `rc` dependency
  var rc;
  try {
    rc = require('rc');
  } catch (e0) {
    try {
      rc = require('sails/node_modules/rc');
    } catch (e1) {
      console.error('Could not find dependency: `rc`.');
      console.error('Your `.sailsrc` file(s) will be ignored.');
      console.error('To resolve this, run:');
      console.error('npm install rc --save');
      rc = function () { return {}; };
    }
  }

  // Initialize Rollbar
  var rollbar = require("rollbar");
  rollbar.init("MY-ROLLBAR-TOKEN");


  // Start server
  sails.lift(rc('sails'));

})();
4

2 回答 2

2

你需要告诉rollbar要捕捉什么。如果您刚刚阅读了快速入门

// 需要更多来自动检测和报告错误。//继续阅读以获取详细信息

要报告任何未捕获的异常,您需要:

var options = {
  exitOnUncaughtException: true
};
rollbar.handleUncaughtExceptions("POST_SERVER_ITEM_ACCESS_TOKEN", options);
于 2015-06-12T01:11:55.113 回答
1
/**
 * Built-in Log Configuration
 * (sails.config.log)
 *
 * Configure the log level for your app, as well as the transport
 * (Underneath the covers, Sails uses Winston for logging, which
 * allows for some pretty neat custom transports/adapters for log messages)
 *
 * For more information on the Sails logger, check out:
 * http://sailsjs.org/#!/documentation/concepts/Logging
 */

var winston = require('winston')
var rollbar = require('rollbar')

var customLogger = new (winston.Logger)({
  exitOnError: false, // don't crash on exception
  transports: [
    new (winston.transports.Console)({
      level: 'debug',
      handleExceptions: true,
      prettyPrint: true,
      silent: false,
      timestamp: true,
      colorize: true,
      json: false
    }),
    new (winston.transports.File)({
      filename: 'logs/common.log',
      name: 'file.all',
      level: 'debug',
      maxsize: 1024000,
      maxFiles: 10,
      handleExceptions: true,
      json: false
    }),
    new (winston.transports.File)({
      filename: 'logs/error.log',
      name: 'file.error',
      level: 'error',
      maxsize: 1024000,
      maxFiles: 10,
      handleExceptions: true,
      json: false
    })
  ]
})

if (process.env['ROLLBAR_TOKEN']) {
  rollbar.init(process.env['ROLLBAR_TOKEN'], {
    environment: process.env['NODE_ENV']
  })

  customLogger.on('logging', function (transport, level, msg, meta) {
    if (transport.name === 'file.error') {
      rollbar.reportMessage(msg + meta)
    }
  })
}

module.exports.log = {
  custom: customLogger,
  level: 'silly',

  inspect: false
}
于 2016-12-05T06:51:25.220 回答