winston-logzio
Advanced tools
Comparing version 1.0.8 to 3.0.1
@@ -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(); | ||
}); | ||
}); | ||
}); |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
7771
6
162
6
49
1
+ Addedwinston-transport@^4.2.0
+ Added@colors/colors@1.6.0(transitive)
+ Added@dabh/diagnostics@2.0.3(transitive)
+ Added@types/triple-beam@1.3.5(transitive)
+ Addedasync@3.2.5(transitive)
+ Addedcolor@3.2.1(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedcolor-string@1.9.1(transitive)
+ Addedcolorspace@1.1.4(transitive)
+ Addedenabled@2.0.0(transitive)
+ Addedfecha@4.2.3(transitive)
+ Addedfn.name@1.1.0(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-arrayish@0.3.2(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedkuler@2.0.0(transitive)
+ Addedlogform@2.6.0(transitive)
+ Addedms@2.1.3(transitive)
+ Addedone-time@1.0.0(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedsafe-stable-stringify@2.4.3(transitive)
+ Addedsimple-swizzle@0.2.2(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedtext-hex@1.0.0(transitive)
+ Addedtriple-beam@1.4.1(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
+ Addedwinston@3.13.0(transitive)
+ Addedwinston-transport@4.7.0(transitive)
- Removedutil@^0.10.3
- Removedasync@1.0.0(transitive)
- Removedcolors@1.0.3(transitive)
- Removedcycle@1.0.3(transitive)
- Removedeyes@0.1.8(transitive)
- Removedinherits@2.0.3(transitive)
- Removedpkginfo@0.3.1(transitive)
- Removedutil@0.10.4(transitive)
- Removedwinston@1.0.2(transitive)
Updatedlogzio-nodejs@^0.4.15
Updatedwinston@^3.1.0