UNPKG

27.1 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.bufferDrainEvent = exports.unpipeWritableEvent = exports.pipeWritableEvent = exports.finishWritableEvent = exports.drainWritableEvent = exports.timeoutEvent = exports.disconnectedEvent = exports.connectedEvent = exports.logEvent = exports.errorEvent = exports.default = undefined;
7
8var _setImmediate2 = require('babel-runtime/core-js/set-immediate');
9
10var _setImmediate3 = _interopRequireDefault(_setImmediate2);
11
12var _isInteger = require('babel-runtime/core-js/number/is-integer');
13
14var _isInteger2 = _interopRequireDefault(_isInteger);
15
16var _promise = require('babel-runtime/core-js/promise');
17
18var _promise2 = _interopRequireDefault(_promise);
19
20var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
21
22var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
23
24var _defineProperty = require('babel-runtime/core-js/object/define-property');
25
26var _defineProperty2 = _interopRequireDefault(_defineProperty);
27
28var _getIterator2 = require('babel-runtime/core-js/get-iterator');
29
30var _getIterator3 = _interopRequireDefault(_getIterator2);
31
32var _typeof2 = require('babel-runtime/helpers/typeof');
33
34var _typeof3 = _interopRequireDefault(_typeof2);
35
36var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
37
38var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
39
40var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
41
42var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
43
44var _createClass2 = require('babel-runtime/helpers/createClass');
45
46var _createClass3 = _interopRequireDefault(_createClass2);
47
48var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
49
50var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
51
52var _inherits2 = require('babel-runtime/helpers/inherits');
53
54var _inherits3 = _interopRequireDefault(_inherits2);
55
56var _lodash = require('lodash');
57
58var _lodash2 = _interopRequireDefault(_lodash);
59
60var _semver = require('semver');
61
62var _semver2 = _interopRequireDefault(_semver);
63
64var _net = require('net');
65
66var _net2 = _interopRequireDefault(_net);
67
68var _tls = require('tls');
69
70var _tls2 = _interopRequireDefault(_tls);
71
72var _url = require('url');
73
74var _url2 = _interopRequireDefault(_url);
75
76var _stream = require('stream');
77
78var _codependency = require('codependency');
79
80var _codependency2 = _interopRequireDefault(_codependency);
81
82var _reconnectCore = require('reconnect-core');
83
84var _reconnectCore2 = _interopRequireDefault(_reconnectCore);
85
86var _defaults = require('./defaults');
87
88var defaults = _interopRequireWildcard(_defaults);
89
90var _levels = require('./levels');
91
92var levelUtil = _interopRequireWildcard(_levels);
93
94var _text = require('./text');
95
96var _text2 = _interopRequireDefault(_text);
97
98var _serialize = require('./serialize');
99
100var _serialize2 = _interopRequireDefault(_serialize);
101
102var _error = require('./error');
103
104var _ringbuffer = require('./ringbuffer');
105
106var _ringbuffer2 = _interopRequireDefault(_ringbuffer);
107
108var _bunyanstream = require('./bunyanstream');
109
110var _bunyanstream2 = _interopRequireDefault(_bunyanstream);
111
112function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
113
114function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
115
116var newline = /\n/g;
117var tokenPattern = /[a-f\d]{8}-([a-f\d]{4}-){3}[a-f\d]{12}/;
118
119var finalizeLogString = function finalizeLogString(log, token) {
120 return token + ' ' + log.toString().replace(newline, '\u2028') + '\n';
121};
122
123var getConsoleMethod = function getConsoleMethod(lvl) {
124 if (lvl > 3) {
125 return 'error';
126 } else if (lvl === 3) {
127 return 'warn';
128 }
129 return 'log';
130};
131
132var getSafeProp = function getSafeProp(log, prop) {
133 var safeProp = prop;
134 while (safeProp in log) {
135 safeProp = '_' + prop;
136 }
137 return safeProp;
138};
139
140var requirePeer = _codependency2.default.register(module);
141
142var Logger = function (_Writable) {
143 (0, _inherits3.default)(Logger, _Writable);
144
145 function Logger(opts) {
146 (0, _classCallCheck3.default)(this, Logger);
147
148 var _this = (0, _possibleConstructorReturn3.default)(this, (Logger.__proto__ || (0, _getPrototypeOf2.default)(Logger)).call(this, {
149 objectMode: true
150 }));
151
152 if (_lodash2.default.isUndefined(opts)) {
153 throw new _error.BadOptionsError(opts, _text2.default.noOptions());
154 }
155
156 if (!_lodash2.default.isObject(opts)) {
157 throw new _error.BadOptionsError(opts, _text2.default.optionsNotObj(typeof opts === 'undefined' ? 'undefined' : (0, _typeof3.default)(opts)));
158 }
159
160 if (_lodash2.default.isUndefined(opts.token)) {
161 throw new _error.BadOptionsError(opts, _text2.default.noToken());
162 }
163
164 if (!_lodash2.default.isString(opts.token) || !tokenPattern.test(opts.token)) {
165 throw new _error.BadOptionsError(opts, _text2.default.invalidToken(opts.token));
166 }
167
168 _this.levels = levelUtil.normalize(opts);
169
170 var _iteratorNormalCompletion = true;
171 var _didIteratorError = false;
172 var _iteratorError = undefined;
173
174 try {
175 var _loop = function _loop() {
176 var lvlName = _step.value;
177
178 if (lvlName in _this) {
179 throw new _error.BadOptionsError(opts, _text2.default.levelConflict(lvlName));
180 }
181
182 (0, _defineProperty2.default)(_this, lvlName, {
183 enumerable: true,
184 writable: false,
185 value: function value() {
186 this.log.apply(this, [lvlName].concat(Array.prototype.slice.call(arguments)));
187 }
188 });
189 };
190
191 for (var _iterator = (0, _getIterator3.default)(_this.levels), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
192 _loop();
193 }
194 } catch (err) {
195 _didIteratorError = true;
196 _iteratorError = err;
197 } finally {
198 try {
199 if (!_iteratorNormalCompletion && _iterator.return) {
200 _iterator.return();
201 }
202 } finally {
203 if (_didIteratorError) {
204 throw _iteratorError;
205 }
206 }
207 }
208
209 _this.secure = opts.secure === undefined ? defaults.secure : opts.secure;
210 _this.debugEnabled = opts.debug === undefined ? defaults.debug : opts.debug;
211 _this.json = opts.json;
212 _this.flatten = opts.flatten;
213 _this.flattenArrays = 'flattenArrays' in opts ? opts.flattenArrays : opts.flatten;
214 _this.console = opts.console;
215 _this.withLevel = 'withLevel' in opts ? opts.withLevel : true;
216 _this.withStack = opts.withStack;
217 _this.timestamp = opts.timestamp || false;
218
219 _this.bufferSize = opts.bufferSize || defaults.bufferSize;
220 _this.port = opts.port || (_this.secure ? defaults.portSecure : defaults.port);
221 _this.host = opts.host;
222 _this.minLevel = opts.minLevel;
223 _this.replacer = opts.replacer;
224 _this.inactivityTimeout = opts.inactivityTimeout || defaults.inactivityTimeout;
225 _this.token = opts.token;
226 _this.reconnectInitialDelay = opts.reconnectInitialDelay || defaults.reconnectInitialDelay;
227 _this.reconnectMaxDelay = opts.reconnectMaxDelay || defaults.reconnectMaxDelay;
228 _this.reconnectBackoffStrategy = opts.reconnectBackoffStrategy || defaults.reconnectBackoffStrategy;
229
230 if (!_this.debugEnabled) {
231 _this.debugLogger = {
232 log: function log() {}
233 };
234 } else {
235 _this.debugLogger = opts.debugLogger && opts.debugLogger.log ? opts.debugLogger : defaults.debugLogger;
236 }
237
238 var isSecure = _this.secure;
239 _this.ringBuffer = new _ringbuffer2.default(_this.bufferSize);
240 _this.reconnect = (0, _reconnectCore2.default)(function initialize() {
241 var _this2 = this;
242
243 var connection = void 0;
244 var args = [].slice.call(arguments);
245 if (isSecure) {
246 connection = _tls2.default.connect.apply(_tls2.default, args, function () {
247 if (!connection.authorized) {
248 var errMsg = connection.authorizationError;
249 _this2.emit(new _error.LogentriesError(_text2.default.authError(errMsg)));
250 } else if (_tls2.default && _tls2.default.CleartextStream && connection instanceof _tls2.default.CleartextStream) {
251 _this2.emit('connect');
252 }
253 });
254 } else {
255 connection = _net2.default.connect.apply(null, args);
256 }
257 connection.setTimeout(opts.inactivityTimeout || defaults.inactivityTimeout);
258 return connection;
259 });
260
261 _this.ringBuffer.on('buffer shift', function () {
262 _this.debugLogger.log('Buffer is full, will be shifting records until buffer is drained.');
263 });
264
265 _this.on('buffer drain', function () {
266 _this.debugLogger.log('RingBuffer drained.');
267 });
268 return _this;
269 }
270
271 (0, _createClass3.default)(Logger, [{
272 key: '_write',
273 value: function _write(ch, enc, cb) {
274 var _this3 = this;
275
276 this.connection.then(function (conn) {
277 var record = _this3.ringBuffer.read();
278 if (record) {
279 if (_this3.ringBuffer.isEmpty()) {
280 conn.write(record, function () {
281 process.nextTick(function () {
282 _this3.emit('buffer drain');
283
284 _this3.emit('connection drain');
285 });
286 });
287 } else {
288 conn.write(record);
289 }
290 } else {
291 _this3.debugLogger.log('This should not happen. Read from ringBuffer returned null.');
292 }
293 cb();
294 }).catch(function (err) {
295 _this3.emit('error', err);
296 _this3.debugLogger.log('Error: ' + err);
297 cb();
298 });
299 }
300 }, {
301 key: 'setDefaultEncoding',
302 value: function setDefaultEncoding() {}
303 }, {
304 key: 'log',
305 value: function log(lvl, _log) {
306 var modifiedLevel = lvl;
307 var modifiedLog = _log;
308
309 if (modifiedLog === undefined) {
310 modifiedLog = modifiedLevel;
311 modifiedLevel = null;
312 }
313
314 var lvlName = void 0;
315
316 if (modifiedLevel || modifiedLevel === 0) {
317 var _toLevel = this.toLevel(modifiedLevel);
318
319 var _toLevel2 = (0, _slicedToArray3.default)(_toLevel, 2);
320
321 modifiedLevel = _toLevel2[0];
322 lvlName = _toLevel2[1];
323
324 if (!modifiedLevel && modifiedLevel !== 0) {
325 this.emit('error', new _error.LogentriesError(_text2.default.unknownLevel(modifiedLevel)));
326 return;
327 }
328
329 if (modifiedLevel < this.minLevel) {
330 return;
331 }
332 }
333
334 if (_lodash2.default.isArray(modifiedLog)) {
335 if (modifiedLog.length) {
336 var _iteratorNormalCompletion2 = true;
337 var _didIteratorError2 = false;
338 var _iteratorError2 = undefined;
339
340 try {
341 for (var _iterator2 = (0, _getIterator3.default)(modifiedLog), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
342 var $modifiedLog = _step2.value;
343 this.log(modifiedLevel, $modifiedLog);
344 }
345 } catch (err) {
346 _didIteratorError2 = true;
347 _iteratorError2 = err;
348 } finally {
349 try {
350 if (!_iteratorNormalCompletion2 && _iterator2.return) {
351 _iterator2.return();
352 }
353 } finally {
354 if (_didIteratorError2) {
355 throw _iteratorError2;
356 }
357 }
358 }
359 } else {
360 this.emit('error', new _error.LogentriesError(_text2.default.noLogMessage()));
361 }
362 return;
363 }
364
365 if (_lodash2.default.isObject(modifiedLog)) {
366 var safeTime = void 0;
367 var safeLevel = void 0;
368
369 if (this.timestamp) {
370 safeTime = getSafeProp(modifiedLog, 'time');
371 modifiedLog[safeTime] = new Date();
372 }
373
374 if (this.withLevel && lvlName) {
375 safeLevel = getSafeProp(modifiedLog, 'level');
376 modifiedLog[safeLevel] = lvlName;
377 }
378
379 modifiedLog = this._serialize(modifiedLog);
380
381 if (!modifiedLog) {
382 this.emit('error', new _error.LogentriesError(_text2.default.serializedEmpty()));
383 return;
384 }
385
386 if (this.console) {
387 console[getConsoleMethod(modifiedLevel)](JSON.parse(modifiedLog));
388 }
389
390 if (safeTime) delete modifiedLog[safeTime];
391 if (safeLevel) delete modifiedLog[safeLevel];
392 } else {
393 if (_lodash2.default.isEmpty(modifiedLog)) {
394 this.emit('error', new _error.LogentriesError(_text2.default.noLogMessage()));
395 return;
396 }
397
398 modifiedLog = [modifiedLog.toString()];
399
400 if (this.withLevel && lvlName) {
401 modifiedLog.unshift(lvlName);
402 }
403
404 if (this.timestamp) {
405 modifiedLog.unshift(new Date().toISOString());
406 }
407
408 modifiedLog = modifiedLog.join(' ');
409
410 if (this.console) {
411 console[getConsoleMethod(modifiedLevel)](modifiedLog);
412 }
413 }
414
415 this.emit('log', modifiedLog);
416
417 if (this.ringBuffer.write(finalizeLogString(modifiedLog, this.token))) {
418 this.write();
419 }
420 }
421 }, {
422 key: 'closeConnection',
423 value: function closeConnection() {
424 this.debugLogger.log('Closing retry mechanism along with its connection.');
425 if (!this.reconnection) {
426 this.debugLogger.log('No reconnection instance found. Returning.');
427 return;
428 }
429
430 this.reconnection.disconnect();
431 }
432 }, {
433 key: 'toLevel',
434 value: function toLevel(val) {
435 var num = void 0;
436
437 if (levelUtil.isNumberValid(val)) {
438 num = parseInt(val, 10);
439 } else {
440 num = this.levels.indexOf(val);
441 }
442
443 var name = this.levels[num];
444
445 return name ? [num, name] : [];
446 }
447 }, {
448 key: 'level',
449 value: function level(name) {
450 console.warn(_text2.default.deprecatedLevelMethod());
451 if (~this.levels.indexOf(name)) this.minLevel = name;
452 }
453 }, {
454 key: 'reconnect',
455 get: function get() {
456 return this._reconnect;
457 },
458 set: function set(func) {
459 this._reconnect = func;
460 }
461 }, {
462 key: 'connection',
463 get: function get() {
464 var _this4 = this;
465
466 if (this._connection) {
467 return this._connection;
468 }
469
470 this.debugLogger.log('No connection exists. Creating a new one.');
471
472 if (this.reconnection) {
473 this.reconnection.disconnect();
474 this.reconnection = null;
475 }
476
477 this.reconnection = this.reconnect({
478 initialDelay: this.reconnectInitialDelay,
479 maxDelay: this.reconnectMaxDelay,
480 strategy: this.reconnectBackoffStrategy,
481 failAfter: Infinity,
482 randomisationFactor: 0,
483 immediate: false
484 });
485
486 this.connection = new _promise2.default(function (resolve) {
487 var connOpts = {
488 host: _this4.host,
489 port: _this4.port
490 };
491
492 _this4.reconnection.on('connect', function (connection) {
493 _this4.debugLogger.log('Connected');
494 _this4.emit('connected');
495
496 connection.on('timeout', function () {
497 _this4.debugLogger.log('Socket was inactive for ' + _this4.inactivityTimeout / 1000 + ' seconds. Destroying.');
498 _this4.closeConnection();
499 _this4.connection = null;
500 _this4.emit('timed out');
501 });
502 resolve(connection);
503 });
504
505 _this4.reconnection.on('reconnect', function (n, delay) {
506 if (n > 0) {
507 _this4.debugLogger.log('Trying to reconnect. Times: ' + n + ' , previous delay: ' + delay);
508 }
509 });
510
511 _this4.reconnection.once('disconnect', function () {
512 _this4.debugLogger.log('Socket was disconnected');
513 _this4.connection = null;
514 _this4.emit('disconnected');
515 });
516
517 _this4.reconnection.on('error', function (err) {
518 _this4.debugLogger.log('Error occurred during connection: ' + err);
519 });
520
521 _this4.reconnection.connect(connOpts);
522 });
523 return this.connection;
524 },
525 set: function set(obj) {
526 this._connection = obj;
527 }
528 }, {
529 key: 'reconnection',
530 get: function get() {
531 return this._reconnection;
532 },
533 set: function set(func) {
534 this._reconnection = func;
535 }
536 }, {
537 key: 'debugEnabled',
538 get: function get() {
539 return this._debugEnabled;
540 },
541 set: function set(val) {
542 this._debugEnabled = !!val;
543 }
544 }, {
545 key: 'debugLogger',
546 get: function get() {
547 return this._debugLogger;
548 },
549 set: function set(func) {
550 this._debugLogger = func;
551 }
552 }, {
553 key: 'ringBuffer',
554 get: function get() {
555 return this._ringBuffer;
556 },
557 set: function set(obj) {
558 this._ringBuffer = obj;
559 }
560 }, {
561 key: 'secure',
562 get: function get() {
563 return this._secure;
564 },
565 set: function set(val) {
566 this._secure = !!val;
567 }
568 }, {
569 key: 'token',
570 get: function get() {
571 return this._token;
572 },
573 set: function set(val) {
574 this._token = val;
575 }
576 }, {
577 key: 'bufferSize',
578 get: function get() {
579 return this._bufferSize;
580 },
581 set: function set(val) {
582 this._bufferSize = val;
583 }
584 }, {
585 key: 'console',
586 get: function get() {
587 return this._console;
588 },
589 set: function set(val) {
590 this._console = !!val;
591 }
592 }, {
593 key: 'serialize',
594 get: function get() {
595 return this._serialize;
596 },
597 set: function set(func) {
598 this._serialize = func;
599 }
600 }, {
601 key: 'flatten',
602 get: function get() {
603 return this._flatten;
604 },
605 set: function set(val) {
606 this._flatten = !!val;
607 this.serialize = (0, _serialize2.default)(this);
608 }
609 }, {
610 key: 'flattenArrays',
611 get: function get() {
612 return this._flattenArrays;
613 },
614 set: function set(val) {
615 this._flattenArrays = !!val;
616 this.serialize = (0, _serialize2.default)(this);
617 }
618 }, {
619 key: 'host',
620 get: function get() {
621 return this._host;
622 },
623 set: function set(val) {
624 if (!_lodash2.default.isString(val) || !val.length) {
625 this._host = defaults.host;
626 return;
627 }
628
629 var host = val.replace(/^https?:\/\//, '');
630
631 var url = _url2.default.parse('http://' + host);
632
633 this._host = url.hostname || defaults.host;
634
635 if (url.port) this.port = url.port;
636 }
637 }, {
638 key: 'json',
639 get: function get() {
640 return this._json;
641 },
642 set: function set(val) {
643 this._json = val;
644 }
645 }, {
646 key: 'reconnectMaxDelay',
647 get: function get() {
648 return this._reconnectMaxDelay;
649 },
650 set: function set(val) {
651 this._reconnectMaxDelay = val;
652 }
653 }, {
654 key: 'reconnectInitialDelay',
655 get: function get() {
656 return this._reconnectInitialDelay;
657 },
658 set: function set(val) {
659 this._reconnectInitialDelay = val;
660 }
661 }, {
662 key: 'reconnectBackoffStrategy',
663 get: function get() {
664 return this._reconnectBackoffStrategy;
665 },
666 set: function set(val) {
667 this._reconnectBackoffStrategy = val;
668 }
669 }, {
670 key: 'minLevel',
671 get: function get() {
672 return this._minLevel;
673 },
674 set: function set(val) {
675 var _toLevel3 = this.toLevel(val);
676
677 var _toLevel4 = (0, _slicedToArray3.default)(_toLevel3, 1);
678
679 var num = _toLevel4[0];
680
681
682 this._minLevel = _lodash2.default.isNumber(num) ? num : 0;
683 }
684 }, {
685 key: 'port',
686 get: function get() {
687 return this._port;
688 },
689 set: function set(val) {
690 var port = parseFloat(val);
691 if ((0, _isInteger2.default)(port) && _lodash2.default.inRange(port, 65536)) this._port = port;
692 }
693 }, {
694 key: 'replacer',
695 get: function get() {
696 return this._replacer;
697 },
698 set: function set(val) {
699 this._replacer = _lodash2.default.isFunction(val) ? val : undefined;
700 this.serialize = (0, _serialize2.default)(this);
701 }
702 }, {
703 key: 'inactivityTimeout',
704 get: function get() {
705 return this._inactivityTimeout;
706 },
707 set: function set(val) {
708 if ((0, _isInteger2.default)(val) && val >= 0) {
709 this._inactivityTimeout = parseInt(val, 10);
710 }
711
712 if (!_lodash2.default.isNumber(this._inactivityTimeout)) {
713 this._inactivityTimeout = defaults.inactivityTimeout;
714 }
715 }
716 }, {
717 key: 'timestamp',
718 get: function get() {
719 return this._timestamp;
720 },
721 set: function set(val) {
722 this._timestamp = !!val;
723 }
724 }, {
725 key: 'withLevel',
726 get: function get() {
727 return this._withLevel;
728 },
729 set: function set(val) {
730 this._withLevel = !!val;
731 }
732 }, {
733 key: 'withStack',
734 get: function get() {
735 return this._withStack;
736 },
737 set: function set(val) {
738 this._withStack = !!val;
739 this.serialize = (0, _serialize2.default)(this);
740 }
741 }, {
742 key: 'levels',
743 get: function get() {
744 return this._levels && this._levels.slice();
745 },
746 set: function set(val) {
747 this._levels = val;
748 }
749 }], [{
750 key: 'winston',
751 value: function winston() {
752 console.warn(_text2.default.deprecatedWinstonMethod());
753 }
754 }, {
755 key: 'provisionWinston',
756 value: function provisionWinston(winston) {
757 if (winston.transports.Logentries) return;
758
759 var Transport = winston.Transport;
760
761 var LogentriesTransport = function (_Transport) {
762 (0, _inherits3.default)(LogentriesTransport, _Transport);
763
764 function LogentriesTransport(opts) {
765 (0, _classCallCheck3.default)(this, LogentriesTransport);
766
767 var _this5 = (0, _possibleConstructorReturn3.default)(this, (LogentriesTransport.__proto__ || (0, _getPrototypeOf2.default)(LogentriesTransport)).call(this, opts));
768
769 _this5.json = opts.json;
770
771 var transportOpts = _lodash2.default.clone(opts || {});
772
773 transportOpts.minLevel = transportOpts.minLevel || transportOpts.level || _this5.tempLevel || 0;
774
775 transportOpts.levels = transportOpts.levels || winston.levels;
776 if (_semver2.default.satisfies(winston.version, '>=2.0.0')) {
777 (function () {
778 var levels = transportOpts.levels;
779 var values = _lodash2.default.values(levels).reverse();
780 transportOpts.levels = {};
781 _lodash2.default.keys(levels).forEach(function (k, i) {
782 transportOpts.levels[k] = values[i];
783 });
784 })();
785 }
786
787 _this5.tempLevel = null;
788 _this5.logger = new Logger(transportOpts);
789 _this5.logger.on('error', function (err) {
790 return _this5.emit(err);
791 });
792 return _this5;
793 }
794
795 (0, _createClass3.default)(LogentriesTransport, [{
796 key: 'log',
797 value: function log(lvl, msg, meta, cb) {
798 if (this.json) {
799 var message = {
800 message: msg
801 };
802 if (!_lodash2.default.isEmpty(meta)) {
803 if (_lodash2.default.isObject(meta)) {
804 _lodash2.default.defaults(message, meta);
805 } else {
806 message.meta = meta;
807 }
808 }
809
810 this.logger.log(lvl, message);
811 } else {
812 var _message = msg;
813 if (!_lodash2.default.isEmpty(meta)) {
814 if (_lodash2.default.isString(_message)) {
815 _message += ' ' + this.logger.serialize(meta);
816 } else if (_lodash2.default.isObject(_message)) {
817 _message[getSafeProp(_message, 'meta')] = meta;
818 }
819 }
820
821 this.logger.log(lvl, _message);
822 }
823
824 (0, _setImmediate3.default)(cb.bind(null, null, true));
825 }
826 }, {
827 key: 'name',
828 get: function get() {
829 return 'logentries';
830 }
831 }, {
832 key: 'tempLevel',
833 get: function get() {
834 return this._tempLevel;
835 },
836 set: function set(val) {
837 this._tempLevel = val;
838 }
839 }, {
840 key: 'logger',
841 get: function get() {
842 return this._logger;
843 },
844 set: function set(obj) {
845 this._logger = obj;
846 }
847 }, {
848 key: 'level',
849 get: function get() {
850 var _logger$toLevel = this.logger.toLevel(this.logger.minLevel);
851
852 var _logger$toLevel2 = (0, _slicedToArray3.default)(_logger$toLevel, 2);
853
854 var lvlName = _logger$toLevel2[1];
855
856 return lvlName;
857 },
858 set: function set(val) {
859 if (!this.logger) {
860 this.tempLevel = val;
861 } else {
862 this.logger.minLevel = val;
863 }
864 }
865 }, {
866 key: 'levels',
867 get: function get() {
868 return this.logger.levels.reduce(function (acc, lvlName, lvlNum) {
869 var newAcc = acc;
870 newAcc[lvlName] = lvlNum;
871 return newAcc;
872 }, {});
873 }
874 }]);
875 return LogentriesTransport;
876 }(Transport);
877
878 winston.transports.Logentries = LogentriesTransport;
879 }
880 }, {
881 key: 'bunyanStream',
882 value: function bunyanStream(opts) {
883 var stream = new _bunyanstream2.default(opts);
884
885 var _stream$logger$toLeve = stream.logger.toLevel(stream.logger.minLevel);
886
887 var _stream$logger$toLeve2 = (0, _slicedToArray3.default)(_stream$logger$toLeve, 2);
888
889 var level = _stream$logger$toLeve2[1];
890
891 var type = 'raw';
892 var name = 'logentries';
893
894 stream.logger.minLevel = 0;
895
896 return { level: level, name: name, stream: stream, type: type };
897 }
898 }]);
899 return Logger;
900}(_stream.Writable);
901
902var winston = requirePeer('winston', { optional: true });
903
904if (winston) Logger.provisionWinston(winston);
905
906var winston1 = requirePeer('winston1', { optional: true });
907var winston2 = requirePeer('winston2x', { optional: true });
908
909if (winston1) Logger.provisionWinston(winston1);
910if (winston2) Logger.provisionWinston(winston2);
911
912var errorEvent = 'error';
913var logEvent = 'log';
914var connectedEvent = 'connected';
915var disconnectedEvent = 'disconnected';
916var timeoutEvent = 'timed out';
917var drainWritableEvent = 'drain';
918var finishWritableEvent = 'finish';
919var pipeWritableEvent = 'pipe';
920var unpipeWritableEvent = 'unpipe';
921var bufferDrainEvent = 'buffer drain';
922
923exports.default = Logger;
924exports.errorEvent = errorEvent;
925exports.logEvent = logEvent;
926exports.connectedEvent = connectedEvent;
927exports.disconnectedEvent = disconnectedEvent;
928exports.timeoutEvent = timeoutEvent;
929exports.drainWritableEvent = drainWritableEvent;
930exports.finishWritableEvent = finishWritableEvent;
931exports.pipeWritableEvent = pipeWritableEvent;
932exports.unpipeWritableEvent = unpipeWritableEvent;
933exports.bufferDrainEvent = bufferDrainEvent;
934module.exports = exports['default'];
935//# sourceMappingURL=logger.js.map