2016-03-02 95 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