1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*
- * file-archive-test.js: Tests for instances of the File transport setting the archive option,
- *
- * (C) 2015 Nimrod Becker
- * MIT LICENSE
- *
- */
- var assert = require('assert'),
- exec = require('child_process').exec,
- fs = require('fs'),
- path = require('path'),
- vows = require('vows'),
- winston = require('../../lib/winston'),
- helpers = require('../helpers');
- var archiveTransport = new winston.transports.File({
- timestamp: true,
- json: false,
- zippedArchive: true,
- tailable: true,
- filename: 'testarchive.log',
- dirname: path.join(__dirname, '..', 'fixtures', 'logs'),
- maxsize: 4096,
- maxFiles: 3
- });
- function data(ch) {
- return new Array(1018).join(String.fromCharCode(65 + ch));
- }
- function logKbytes(kbytes, txt) {
- //
- // With no timestamp and at the info level,
- // winston adds exactly 7 characters:
- // [info](4)[ :](2)[\n](1)
- //
- for (var i = 0; i < kbytes; i++) {
- archiveTransport.log('info', data(txt), null, function() {});
- }
- }
- vows.describe('winston/transports/file/zippedArchive').addBatch({
- "An instance of the File Transport with tailable true": {
- "when created archived files are rolled": {
- topic: function() {
- var that = this,
- created = 0;
- archiveTransport.on('logged', function() {
- if (++created === 6) {
- return that.callback();
- }
- logKbytes(4, created);
- });
- logKbytes(4, created);
- },
- "should be only 3 files called testarchive.log, testarchive1.log.gz and testarchive2.log.gz": function() {
- //Give the archive a little time to settle
- // setTimeout(function() {
- for (var num = 0; num < 6; num++) {
- var file = !num ? 'testarchive.log' : 'testarchive' + num + '.log.gz',
- fullpath = path.join(__dirname, '..', 'fixtures', 'logs', file);
- // There should be no files with that name
- if (num >= 3) {
- assert.throws(function() {
- fs.statSync(fullpath);
- }, Error);
- } else {
- // The other files should exist
- assert.doesNotThrow(function() {
- fs.statSync(fullpath);
- }, Error);
- }
- }
- //},5000);
- },
- }
- },
- }).export(module);
|