[英]Logging Error : Error: ENOENT: no such file or directory
我正在嘗試在節點 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;
當我使用 this 時,出現錯誤。
我的 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;
除了日志記錄之外,其他一切都運行良好。
chandoo 提到的答案部分可行,但是,您在使用時可能會遇到問題
streams: [{
type: 'rotating-file',
path: logLocation,
period: '1d',
count: 21
}]
旋轉文件是這里的主要問題,bunyan 社區已經概述如下。 我遇到了同樣的問題,當我使用“旋轉文件”和相關計數屬性刪除時,一切順利。 你也可以考慮。 嘗試替代日志輪換選項,例如 Linux logrotate 工具。
關於集群使用的警告:將 bunyan-rotating-file-stream 與 node.js 的“集群”模塊一起使用可能會導致意外的文件旋轉。 集群中不能有多個進程記錄到同一文件路徑。 換句話說,您必須為集群中的 master 和每個 worker 擁有單獨的日志文件路徑。 或者,考慮使用系統文件輪換工具,例如 Linux 上的 logrotate 或 SmartOS/Illumos 上的 logadm。 有關詳細信息,請參閱問題 #117 上的此評論。
我也遇到過這個問題。
我通過在路徑中手動創建日志文件夾來修復它。 我還發現了一個錯誤。 我也安裝了依賴項,但我認為沒有必要。
npm install async lodash semver strftime --save
更改var logLocation = './logs/test.log';
之前加點。 要將日期添加到您的日志中,您還必須安裝 bunyan-rotating-file-stream。
路徑:'./logs/server-%Y%m%d.log',
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.