A Writable Stream object that uploads to s3 objects, periodically rotating to a new object name.
See also tails3 for a script to tail the log files produced by s3-streamlogger.
npm install --save s3-streamlogger
var S3StreamLogger = require('s3-streamlogger').S3StreamLogger;
var s3stream = new S3StreamLogger({
bucket: "mys3bucket",
access_key_id: "...",
secret_access_key: "..."
});
s3stream.write("hello S3");
npm install --save winston
npm install --save s3-streamlogger
var winston = require('winston');
var S3StreamLogger = require('s3-streamlogger').S3StreamLogger;
var s3_stream = new S3StreamLogger({
bucket: "mys3bucket",
access_key_id: "...",
secret_access_key: "..."
});
var logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
stream: s3_stream
})
]
});
logger.info('Hello Winston!');
tails3 expects messages to be logged as json (the default for the file transport), with hostname and (for critical errors), stack properties to each log object, in addition to the standard timestamp, level and message properties. You can provide these using the third "metadata" option to winston's log method:
logger.log(level, message, {hostname: ... , stack: ...});
When there is an error writing to s3, the stream emits an 'error' event with details. You should take care not to log these errors back to the same stream (as that is likely to cause infinite recursion). Instead log them to the console, to a file, or to SNS using winston-sns.
Name of the S3 bucket to upload data to. Must exist.
Can also be provided as the environment variable BUCKET_NAME
.
AWS access key ID, must have putObject permission on the specified bucket.
Can also be provided as the environment variable AWS_SECRET_ACCESS_KEY
.
AWS secret key for the access_key_id
specified.
Can also be provided as the environment variable AWS_SECRET_KEY_ID
.
Format of file names to create, accepts strftime specifiers. Defaults to "%Y-%m-%d-%H-%M-unknown-unknown.log"
. The Date() used to fill the format specifiers is created with the current UTC time, but still has the current timezone, so any specifiers that perform timezone conversion will return incorrect dates.
If you use a format of the form %Y-%m-%d-%H-%M-<stage>-<hostname>.log
, then
you can use tails3 to tail the log files
being generated by S3StreamLogger
.
Files will be rotated every rotate_every
milliseconds. Defaults to 3600000 (60
minutes).
Files will be rotated when they reach max_file_size
bytes. Defaults to 200 KB.
Files will be uploaded every upload_every
milliseconds. Defaults to 20
seconds.
Files will be uploaded if the un-uploaded data exceeds buffer_size
bytes.
Defaults to 10 KB.
The server side encryption AES256
algorithm used when storing objects in S3.
Defaults to false.
ISC: equivalent to 2-clause BSD.