Socket
Socket
Sign inDemoInstall

winston-logzio

Package Overview
Dependencies
79
Maintainers
3
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.8 to 3.0.1

.eslintrc.js

82

lib/winston-logzio.js

@@ -1,57 +0,57 @@

var util = require('util');
var _assign = require('lodash.assign');
var winston = require('winston');
var stringifySafe = require('json-stringify-safe');
var logzioNodejs = require('logzio-nodejs');
const Transport = require('winston-transport');
const stringifySafe = require('json-stringify-safe');
const logzioNodejs = require('logzio-nodejs');
exports = module.exports = winston.transports.Logzio = function (options) {
module.exports = class LogzioWinstonTransport extends Transport {
constructor(options) {
super(options);
this.name = options.name || 'LogzioLogger';
this.level = options.level || 'info';
this.logzioLogger = logzioNodejs.createLogger(options);
};
var Logzio = winston.transports.Logzio;
}
//
// Inherit from `winston.Transport` so you can take advantage
// of the base functionality and `.handleExceptions()`.
//
util.inherits(Logzio, winston.Transport);
log(info, callback) {
setImmediate(() => {
this.emit('logged', info);
});
Logzio.prototype.safeToString = function(json) {
try {
return JSON.stringify(json);
let msg = info.message;
if (typeof info.message !== 'string' && typeof info.message !== 'object') {
msg = {
message: this.safeToString(info.message),
};
} else if (typeof info.message === 'string') {
msg = {
message: info.message,
};
}
catch(ex) {
return stringifySafe(json, null, null, function() { });
}
};
Logzio.prototype.log = function (level, msg, meta, callback) {
if (typeof msg !== 'string' && typeof msg !== 'object') {
msg = {message: this.safeToString(msg)};
}
else if (typeof msg === 'string') {
msg = {message: msg};
}
const splat = info[Symbol.for('splat')];
let meta = splat && splat[0];
if (meta instanceof Error) {
meta = {error: meta.stack || meta.toString()};
meta = {
error: meta.stack || meta.toString(),
};
}
_assign(msg, {
level: level,
meta: meta
const logObject = Object.assign({}, info, msg, {
level: info.level || this.level,
meta,
});
this.logzioLogger.log(msg);
this.logzioLogger.log(logObject);
callback(null, true);
};
}
Logzio.prototype.flush = function ( callback ) {
this.logzioLogger.sendAndClose( callback );
static safeToString(json) {
try {
return JSON.stringify(json);
} catch (ex) {
return stringifySafe(json, null, null, () => {});
}
}
finish(callback) {
this.logzioLogger.sendAndClose(callback);
}
};
{
"name": "winston-logzio",
"description": "A winston transport wrapper for logzio",
"version": "1.0.8",
"version": "3.0.1",
"author": "Gilly Barr <gilly@logz.io>",

@@ -14,2 +14,6 @@ "contributors": [

"email": "alonmizra@gmail.com"
},
{
"name": "Ido Halevi",
"email": "ido.h@logz.io"
}

@@ -33,9 +37,12 @@ ],

"lodash.assign": "4.2.0",
"logzio-nodejs": "^0.4.11",
"util": "^0.10.3",
"winston": "1.0.x"
"logzio-nodejs": "^0.4.15",
"winston": "^3.1.0",
"winston-transport": "^4.2.0"
},
"devDependencies": {
"assert": "^1.3.0",
"mocha": "^2.3.3",
"eslint": "^5.7.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.14.0",
"mocha": "^5.2.0",
"sinon": "^1.17.1"

@@ -42,0 +49,0 @@ },

@@ -7,3 +7,3 @@ ![Build Status](https://travis-ci.org/logzio/winston-logzio.svg?branch=master)

## Installation
```js
```bash
npm install winston-logzio --save

@@ -15,14 +15,18 @@ ```

```javascript
var winston = require('winston');
var logzioWinstonTransport = require('winston-logzio');
const winston = require('winston');
const logzioWinstonTransport = require('winston-logzio');
var loggerOptions = {
token: '__YOUR_API_TOKEN__',
host: 'listener.logz.io', // either listener.logz.io for US accounts or listener-eu.logz.io for EU Accounts
type: 'YourLogType' // OPTIONAL (If none is set, it will be 'nodejs')
};
winston.add(logzioWinstonTransport, loggerOptions);
const logzioWinstonTransport = new LogzioWinstonTransport({
level: 'info',
name: 'winston_logzio',
token: '__YOUR_API_TOKEN__',
});
winston.log('info', 'winston logger configured with logzio transport');
const logger = createLogger(winston.Logger)({
transports: [logzioWinstonTransport]
]);
logger.log('warn', 'Just a test message', new Error('Big problem'));
```

@@ -38,3 +42,3 @@

If you want to configure the nodejs logger, any parameters sent to winston when initializing the transport
(what is held in the variable `loggerOptions` in the sample above) will be passed to the logzio nodejs logger itself.
(what is held in the variable `LogzioWinstonTransport` in the sample above) will be passed to the logzio nodejs logger itself.

@@ -48,35 +52,1 @@

```
## Logs UncaughtException before Node process exit
To enable logzio to log the last UncaughtException before Node exits,
- you instantiate winston logger and injecting into it the winston-logzio transport as well as the exceptionHandlers
- set your Node process to trap UncaughtException
```javascript
var callback = function() {} ;
var winston = require('winston');
var winstonLogzIO = require( 'winston-logzio' );
var loggerOptions = {
token: '__YOUR_API_TOKEN__'
};
var logzIOTransport = new (winstonLogzIO)(loggerOptions);
var logger = new(winston.Logger)({
transports: [
logzIOTransport
],
exceptionHandlers: [
logzIOTransport
],
exitOnError: true // set this to true
});
process.on('uncaughtException', function (err) {
logger.error("UncaughtException processing: %s", err);
logzIOTransport.flush( function(callback) {
process.exit(1);
});
});
```

@@ -1,44 +0,117 @@

var sinon = require('sinon');
var assert = require('assert');
var logzioNodejs = require('logzio-nodejs');
var winston = require('winston');
var winstonLogzio = require('../lib/winston-logzio');
const sinon = require('sinon');
const assert = require('assert');
const logzioNodejs = require('logzio-nodejs');
const winston = require('winston');
describe('winston-logzio', function() {
const {
createLogger,
} = winston;
const LogzioWinstonTransport = require('../lib/winston-logzio');
describe('send string as log message', function () {
var logSpy = sinon.spy();
describe('winston-logzio', () => {
let logSpy;
beforeEach((done) => {
logSpy = sinon.spy();
sinon.stub(logzioNodejs, 'createLogger')
.returns({
log: logSpy,
});
done();
});
before(function(done){
sinon.stub(logzioNodejs, 'createLogger')
.returns({ log: logSpy });
done();
});
afterEach((done) => {
logzioNodejs.createLogger.restore();
done();
});
after(function(done) {
logzioNodejs.createLogger.restore();
done();
});
describe('send string as log message', () => {
it('builds the log object properly', (done) => {
const logzioWinstonTransport = new LogzioWinstonTransport({
level: 'info',
name: 'logger1',
token: '_API_TOKEN_',
});
const logger = createLogger({
transports: [logzioWinstonTransport],
});
it('builds the log object properly', function (done) {
winston.add(winston.transports.Logzio, {
name: 'logger1',
token: '_API_TOKEN_'
});
var logMessage = 'Just a test message';
var errorMessage = 'Big problem';
winston.log('warn', logMessage, new Error(errorMessage));
const logMessage = 'Just a test message';
const errorMessage = 'Big problem';
const error = new Error(errorMessage);
logger.log('warn', logMessage, error);
assert(logSpy.calledOnce);
var loggedObject = logSpy.args[0][0];
assert(loggedObject.message === logMessage);
assert(loggedObject.level === 'warn');
assert(typeof loggedObject.meta === 'object');
assert(typeof loggedObject.meta.error === 'string');
assert(loggedObject.meta.error.indexOf(errorMessage) >= 0);
assert(logSpy.calledOnce);
const loggedObject = logSpy.args[0][0];
assert(loggedObject.message === logMessage);
assert(loggedObject.level === 'warn');
assert(typeof loggedObject.meta === 'object');
assert(typeof loggedObject.meta.error === 'string');
assert(loggedObject.meta.error.indexOf(errorMessage) >= 0);
done();
});
done();
});
});
});
describe('send json as log message', () => {
it('builds the log object as json properly', (done) => {
const logzioWinstonTransport = new LogzioWinstonTransport({
level: 'info',
name: 'logger1',
token: '_API_TOKEN_',
});
const logger = createLogger({
transports: [logzioWinstonTransport],
});
const logMessage = {
message: 'Just a test message',
string_value: 'value',
integar_value: 100,
};
const errorMessage = 'Big problem';
const error = new Error(errorMessage);
logger.log('warn', logMessage, error);
assert(logSpy.calledOnce);
const loggedObject = logSpy.args[0][0];
assert(loggedObject.message === logMessage.message);
assert(loggedObject.string_value === logMessage.string_value);
assert(loggedObject.integer_value === logMessage.integer_value);
assert(loggedObject.level === 'warn');
assert(typeof loggedObject.meta === 'object');
assert(typeof loggedObject.meta.error === 'string');
assert(loggedObject.meta.error.indexOf(errorMessage) >= 0);
done();
});
});
describe('send json as log message without error', () => {
it('builds the log object with just a message object', (done) => {
const logzioWinstonTransport = new LogzioWinstonTransport({
level: 'info',
name: 'logger1',
token: '_API_TOKEN_',
});
const logger = createLogger({
transports: [logzioWinstonTransport],
});
const logMessage = {
message: 'Just a test message',
string_value: 'value',
integar_value: 100,
};
logger.log('warn', logMessage);
assert(logSpy.calledOnce);
const loggedObject = logSpy.args[0][0];
assert(loggedObject.message === logMessage.message);
assert(loggedObject.string_value === logMessage.string_value);
assert(loggedObject.integer_value === logMessage.integer_value);
assert(loggedObject.level === 'warn');
done();
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc