Javascript 日志记录错误:错误:enoint:没有这样的文件或目录

Javascript 日志记录错误:错误:enoint:没有这样的文件或目录,javascript,node.js,Javascript,Node.js,我正在尝试使用登录节点js 这是我的logger_service.js var appConfig = require('../config/service'); var bunyan = require('bunyan'); var logLocation = '/logs/test.log' var logger = bunyan.createLogger({ name: 'TEST', streams: [{ type: 'rotating-file'

我正在尝试使用登录节点js

这是我的logger_service.js

var appConfig   = require('../config/service');
var bunyan = require('bunyan');

var logLocation = '/logs/test.log'
var logger = bunyan.createLogger({
    name: 'TEST',
    streams: [{
        type: 'rotating-file',
        path: logLocation,
        period: '1d',
        count: 21
    }]
});

logger.info('location of log file : ' + logLocation);

module.exports = logger;
当我使用这个时,我得到了错误

我的test.js

var moment = require('moment');
var current_date = moment(new Date()).format('YYYY.MM.DD');
var logger = require('./logger_service');

var testing = function () {
    logger.info(current_date)
};

testing();
我得到以下错误:

➜ test_dir node log-monitor/service/test.js      
events.js:141
      throw er; // Unhandled 'error' event
      ^
Error: ENOENT: no such file or directory, open '/logs/test.log'
    at Error (native)
请帮忙。 多谢各位

我的app.js文件

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');
var moment = require('moment');
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

除了日志记录之外,其他一切都正常运行。

我也遇到了这个问题

我通过在路径中手动创建日志文件夹修复了它。我还发现了一个错误。我也安装了依赖项,但我认为没有必要

npm安装异步lodash semver strftime——保存

Changevar logLocation='./logs/test.log'

在前面加上点。要在日志中添加日期,还必须安装bunyan旋转文件流


路径:'./logs/server-%Y%m%d.log',

chandoo提到的答案部分是可行的,但您在使用时可能会遇到这个问题

streams: [{
    type: 'rotating-file',
    path: logLocation,
    period: '1d',
    count: 21
}]
旋转文件是这里的主要关注点,班扬社区已经概述如下。我面临同样的问题,当我使用“旋转文件”和相关计数属性删除时,一切都进行得很顺利。你也可以考虑一下。尝试其他日志旋转选项,例如Linux logrotate工具

集群使用警告:将bunyan旋转文件流与node.js的“集群”模块一起使用可能会导致意外的文件旋转。群集中不能有多个进程记录到同一文件路径。换句话说,集群中的主服务器和每个辅助服务器必须有一个单独的日志文件路径。或者,考虑使用一个系统文件旋转工具,如Linux上的LogRoad或在SMADOS/ILUMOS上的LogADM。有关详细信息,请参见第117期的评论


请确保文件存在于此位置
'/logs/test.log'
,或者您可以像这样从根目录访问它
'../logs/test.log'
我可以这样做。但是当我在服务器上部署它时,我无法创建所需的文件。可以自动创建文件吗?