如果用户访问文件,如何将快速路由记录到文件?

时间:2015-06-01 16:40:08

标签: node.js express

我希望无论何时用户访问特定路由,写入/附加到文件。我想把代码放在路线里面#34; myroute"。我担心的是,如果有多个人访问我的快递应用程序,可能会有一些文件访问/写入问题。

我希望文件中的以下示例输出:

locManager.requestLocationUpdates(provider, 0L, 0.0F, this);

3 个答案:

答案 0 :(得分:0)

如果你想每次为某条路线运行某些代码,我建议为它创建中间件。

http://expressjs.com/guide/using-middleware.html

var app = express();

app.use('/specific/route', function(req, res, next) {
  //add your code to run every time route is hit
  next();
}

app.get('/specific/route', function (req, res, next) {
  res.send('hello world');
}

答案 1 :(得分:0)

你可以这样做:

var app = express();

var logger = function(request, response, next) {
  var accessedPath = request.path;

  // do something with the accessed path
  next();
}

app.use(logger); // for all routes.

app.use('/admin', logger); // for specified routes

在预期的输出中,您可以添加另一列以指定访问指定路径的特定用户。

文件访问/写入问题
没有任何调查或深思熟虑。如果您的访问日志必须是文件,则可以使用一些排队系统。 您的记录器将是这样的:

var logger = function(request, response, next) {
  var accessedPath = request.path;

  // get the user info
  // get datetime/timestamp/date/time Date.now()
  // add userinfo, accessed path and timestamp to the queue.

  next();
}

答案 2 :(得分:0)

您可以使用 express-winston npm 库

const routeWhitelist = ['/user', '/login'];

app.use(expressWinston.logger({
  transports: [new winston.transports.Console()],
  ignoreRoute: function (req, res) {
    return routeWhitelist.indexOf(req.path) === -1;
  }
}));