我使用winston节点模块(https://www.npmjs.com/package/winston)来生成日志文件,使用s3-streamlogger模块(https://www.npmjs.com/package/s3-streamlogger)将其保存到s3服务器中。
var s3_stream = new S3StreamLogger({
bucket: bucket,
access_key_id: accessKeyId,
secret_access_key: secretAccessKey,
name_format: "mylog.log"
});
var logger = new(winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ stream: s3_stream })
]
});
function formatArgs(args){
return [util.format.apply(util.format, Array.prototype.slice.call(args))];
}
console.log = function(){
logger.info.apply(logger, formatArgs(arguments));
};
我的问题是,每次重新启动服务器时,日志文件都会更新。我希望以前的日志应该是他们的日志文件,并且应该附加新的日志。但这不会发生。我尝试了很多东西,但没有什么对我有用。 任何人都可以帮助我吗?
答案 0 :(得分:1)
不幸的是s3-streamlogger不能做你想做的事情:由于s3的工作方式,它必须在每次更新时完全重新上传文件,所以当你的程序重新启动时,旧文件是完全的覆盖。
我建议您接受创建带时间戳名称的轮换日志文件,因为s3-streamlogger会提高效率(因为文件越大,每次重新上传它的效率就越低)。如果您使用name_format:'%Y-%m-%d-%H-%M-production-yourapp.log'
,则可以使用tails3查看s3-streamlogger创建的日志文件,就像它们是单个文件一样。