我正在使用 winston Node 模块(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));
};
我的问题是,每次重新启动服务器时,日志文件都会更新。我希望以前的日志应该是他们的日志文件,新日志应该附加在上面。但这并没有发生。我尝试了很多东西,但对我没有任何用处。 谁能帮帮我?
最佳答案
不幸的是,s3-streamlogger 不能做你想做的事:由于 s3 的工作方式,它必须在每次更新时完全重新上传文件,所以当你的程序重新启动时,旧文件被完全覆盖。
我建议您接受创建带有时间戳名称的轮换日志文件,因为 s3-streamlogger 这样做是为了提高效率(随着文件变大,每次重新上传它的效率会降低)。如果您使用 name_format:'%Y-%m-%d-%H-%M-production-yourapp.log'
那么您可以使用 tails3查看 s3-streamlogger 创建的日志文件,就好像它们是单个文件一样。
关于node.js - 如何在使用 s3-stream 记录器 Node 模块重新启动服务器后将内容附加到日志文件中并上传到 s3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911949/