如何使用s3-streamlogger节点模块重新logging日志文件中的内容并上传到s3中?

我正在使用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)); }; 

我的问题是,每次服务器重新启动时日志文件都会更新。 我希望以前的日志应该是他们的日志文件和新的日志应附加在那。 但是这没有发生。 我尝试了很多东西,但没有为我工作。 谁能帮我?

不幸的是,s3-streamlogger不能做你想做的事情:因为s3的工作方式,每次更新时都必须重新上传文件,所以当程序重新启动时,旧文件被完全覆盖。

我build议你接受使用时间戳名称创build轮转的日志文件,因为s3-streamlogger为了提高效率(因为文件变得越来越小,每次重新上传的效率越低)。 如果您使用name_format:'%Y-%m-%d-%H-%M-production-yourapp.log'那么您可以使用tails3查看s3-streamlogger创build的日志文件,就好像它们是单个文件一样。