2016-03-02 113 views
-1

我是Node JS的新手。我正在尋找Node的日誌庫,我找到了Winston。現在,我想在日誌文件達到一定大小並且名稱中包含時間戳時將它們存檔。如何使用winston在日誌文件達到特定大小限制後對日誌文件進行歸檔?

對於前:

當前日誌文件:日誌/ devlog.log(10 MB)

,因爲它達到了10 MB,我想存檔

歸檔日誌文件:歸檔/devlog-03.02.2016.log

請幫我在winston或其他任何解決方案中做到這一點。在此先感謝

我對app.js代碼(節點服務器):

console.log('Hello world'); 
var winston = require('winston'); 
var date1 = new Date(); 
winston.emitErrs = true; 
var date = new Date(); 
var loggerName = "server.app.js"; 
var winston = require('winston'), 
path = require('path'), 
transports = []; 

transports.push(new winston.transports.DailyRotateFile({ 
    name: 'file', 
    datePattern: '.yyyy-MM-ddTHH-mm', 
    filename: path.join(__dirname, "logs", "log_file.log"), 
    maxFiles: 5, 
    maxsize: 100000000 
})); 

var logger = new winston.Logger({ transports: transports }); 
//winston.loggers.add('ServerLogger', { 
// transports: [ 
//  new (winston.transports.File)({ 
//   name: 'Devlogger', //Name of the transport 
//   filename: 'logs/devlogNormalF.log', // log file name 
//   json: false, 
//   maxsize: 1048576, //1MB 
//   maxFiles: 10, // 10 Files max 
//   timestamp: function() { 
//    return new Date().toISOString();//.substring(0,23); 
//   } 
//  } 
//  ), new archiveFile(options) 
// ] 
//}); 
//var logger = winston.loggers.get('ServerLogger'); 
logger.info ('Logger Name: '+loggerName+' App starting...'); 
logger.info('Logger Name: ' + loggerName + 'Hello world'); 
logger.info('Logger Name: ' + loggerName + ' Accessing test/user'); 
logger.error('Logger Name: ' + loggerName + ' Cannot access test/user/user.png'); 
var express = require('express'); 
var app = express(); 
app.get('/', function (req, res) { 
    res.send('Hello World!'); 
    var date2 = new Date(); 
    var diff = date2 - date1; 
    logger.info('Start '+ date1+' Stop '+date2) 
    logger.info('Logger Name: ' + loggerName + ' Response time of Node is ' + diff+' ms'); 
}); 

app.listen(3000, function() { 
    logger.warn('Logger Name: ' + loggerName + ' Example app listening on port 3000!'); 
    logger.info('Logger Name: ' + loggerName + ' App ending...'); 
}); 

回答

1

溫斯頓使用datepattern支持日誌輪替]。
您可以指定datepattern,MAXFILESIZE和maxfile像這樣:

var winston  = require ('winston'), 
    path  = require ('path'), 
    transports = []; 

transports.push(new winston.transports.DailyRotateFile({ 
    name: 'file', 
    datePattern: '.yyyy-MM-ddTHH-mm', 
    filename: path.join(__dirname, "logs", "log_file.log"), 
    maxFiles: 5, 
    maxsize: 100000000 

})); 

var logger = new winston.Logger({transports: transports}); 

我做了一些更改code.I測試,它的工作原理fine.Its創建與datepattern日誌。

console.log('Hello world'); 
var date1 = new Date(); 
var date = new Date(); 
var loggerName = "server.app.js"; 
var winston = require('winston'); 
var logger = new (winston.Logger)({ 
    transports: [ 
    new (winston.transports.DailyRotateFile)({ 
    name: 'file', 
    datePattern: '.yyyy-MM-ddTHH-mm', 
    filename: "log_file", 
    maxFiles: 5, 
    maxsize: 100000000 



}) 
    ] 
}); 



logger.info ('Logger Name: '+loggerName+' App starting...'); 
logger.info('Logger Name: ' + loggerName + 'Hello world'); 
logger.info('Logger Name: ' + loggerName + ' Accessing test/user'); 
logger.error('Logger Name: ' + loggerName + ' Cannot access test/user/user.png'); 

var express = require('express'); 
var app = express(); 
app.get('/', function (req, res) { 
    res.send('Hello World!'); 
    var date2 = new Date(); 
    var diff = date2 - date1; 
    logger.info('Start '+ date1+' Stop '+date2) 
    logger.info('Logger Name: ' + loggerName + ' Response time of Node is ' + diff+' ms'); 
}); 

app.listen(3000, function() { 
    logger.warn('Logger Name: ' + loggerName + ' Example app listening on port 3000!'); 
    logger.info('Logger Name: ' + loggerName + ' App ending...'); 
}); 
+0

我試着這樣做的代碼,這是給我的錯誤,指出: – user1840131

+0

我試着這樣做的代碼,這是給我的錯誤,指出: transports.push(新winston.transports.DailyRotateFile({ ^ TypeError:winston.transports.DailyRotateFile不是函數 at Object。(C:\ Users \ user123231 \ Documents \ Visual Studio 2015 \ Projects \ LogTester \ LogTester \ app.js:16:17)at Module._compile (module.js:413:34)在Object.Module._extensions..js – user1840131

+0

@nicholas同樣的錯誤仍然存​​在。 – user1840131