/* * custom-timestamp-test.js: Test function as timestamp option for transport `{ timestamp: function () {} }` * * (C) 2011 Charlie Robbins, Tom Shinnick * MIT LICENSE * */ var assert = require('assert'), events = require('events'), fs = require('fs'), path = require('path'), vows = require('vows'), winston = require('../lib/winston'), helpers = require('./helpers'); function assertTimestamp (basename, options) { var filename = path.join(__dirname, 'fixtures', 'logs', basename + '.log'); try { fs.unlinkSync(filename) } catch (ex) { } return { topic: function () { options.filename = filename; var transport = new (winston.transports.File)(options); // We must wait until transport file has emitted the 'flush' // event to be sure the file has been created and written transport.once('flush', this.callback.bind(this, null, filename)); transport.log('info', 'When a fake tree falls in the forest...', null, function () {}); }, "should log with the appropriate timestamp": function (_, filename) { var data = fs.readFileSync(filename, 'utf8'); assert.isNotNull(data.match(options.pattern)); } } } vows.describe('winston/transport/timestamp').addBatch({ "When timestamp option is used": { "with file transport": { "with value set to false": assertTimestamp('noTimestamp', { pattern: /^info\:/, json: false, timestamp: false }), "with value set to true ": assertTimestamp('defaultTimestamp', { pattern: /^\d\d? \w{3}/, json: false, timestamp: true }), "and function value": assertTimestamp('customTimestamp', { pattern: /^\d{8}\./, json: false, timestamp: function () { return '20110803.171657'; } }) } } }).export(module);