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