New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

enrise-logger

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

enrise-logger - npm Package Compare versions

Comparing version 0.2.1 to 1.0.0

12

index.js

@@ -14,3 +14,6 @@ 'use strict';

this._settings = _.defaultsDeep(_.cloneDeep(settings), defaultSettings);
const winstonSettings = _.get(settings, 'winston', {});
this._settings = _.defaultsDeep(_.cloneDeep(winstonSettings), defaultSettings.winston);
this._namedSettings = _.mapKeys(_.omit(settings, 'winston'), (v, k) => {return k.toUpperCase();});
this._container = new winston.Container({

@@ -31,2 +34,7 @@ exitOnError: false

// Check for a config specific for the logger we're about to create
const namedSetting = _.get(this._namedSettings, label.toUpperCase());
// Named Config level comes before programmatic set level, as the config can be changed post-deploy
const levelToUse = _.get(namedSetting, 'level', level);
// Filter out falsey values

@@ -39,3 +47,3 @@ const transportKeys = _.keys(_.pickBy(this._settings.transports, _.identity));

transportSettings.label = label;
transportSettings.level = level || transportSettings.level;
transportSettings.level = levelToUse || transportSettings.level;

@@ -42,0 +50,0 @@ return new winston.transports[transport](transportSettings);

2

package.json
{
"name": "enrise-logger",
"description": "Logger used within Enrise projects and module's",
"version": "0.2.1",
"version": "1.0.0",
"author": "Team MatchMinds @ Enrise",

@@ -6,0 +6,0 @@ "main": "index.js",

@@ -24,3 +24,4 @@ # Node.js logger module

The `log` object contains functions for each [log-level](#levels):
- `log.info('Some log message');`
- `log.info('Some log message');`
- `log.error(new Error('Some error'));`

@@ -36,18 +37,20 @@

{
transports: {
Console: {
level: 'info',
colorize: true
winston: {
transports: {
Console: {
level: 'info',
colorize: true
}
},
levels: {
error: 0,
warn: 1,
help: 2,
data: 3,
info: 4,
trace: 5,
debug: 6,
prompt: 7,
verbose: 8
}
},
levels: {
error: 0,
warn: 1,
help: 2,
data: 3,
info: 4,
trace: 5,
debug: 6,
prompt: 7,
verbose: 8
}

@@ -57,4 +60,29 @@ }

#### `transports: Object`
#### `winston: Object`
The top-level key `winston` in the config contains winston-specific configuration.
#### `<namedloggerKey>: {level: String}`
You can add other toplevel-keys to provide named-logger specific level-information. This functionality allows you to set the log-level through configuration.
``` javascript
{
winston: {...},
namedlogger1: {
level: debug
}
}
```
The above configuration would set the `level` of logging to `debug` for the logger which was created as follows:
```javascript
const log = require('enrise-logger').get('NamedLogger1');
```
Be aware that the way you'll read and apply your config dictates the actions you should take to change the actual log-level
at run-time. If you only read and apply the config at the start of your program you'd have to restart your program to apply the changed log-level.
#### `winston.transports: Object`
The keys define the transports that the logger should use, the value is the configuration passed to the transport constructor. Multiple transports can be combined. Defaults to only the Console with the settings above. To exclude the Console transport, set it to `null`. Possible transports are:
- `Console`: [winston.Console documentation](https://github.com/winstonjs/winston/blob/master/docs/transports.md#console-transport)

@@ -65,3 +93,3 @@ - `File`: [winston.File documentation](https://github.com/winstonjs/winston/blob/master/docs/transports.md#file-transport)

#### `levels`
#### `winston.levels`
The node-logger uses more detailed log-levels than winston does. The higher the priority the more important the message is considered to be, and the lower the corresponding integer priority. These levels can be modified to your liking.

@@ -0,20 +1,24 @@

'use strict';
module.exports = {
transports: {
Console: {
level: 'info',
colorize: true
winston: {
transports: {
Console: {
level: 'info',
colorize: true
}
},
longtrace: false,
levels: {
error: 0,
warn: 1,
help: 2,
data: 3,
info: 4,
trace: 5,
debug: 6,
prompt: 7,
verbose: 8
}
},
longtrace: false,
levels: {
error: 0,
warn: 1,
help: 2,
data: 3,
info: 4,
trace: 5,
debug: 6,
prompt: 7,
verbose: 8
}
};
};

@@ -6,2 +6,3 @@ 'use strict';

const proxyquire = require('proxyquire').noCallThru();
proxyquire.noPreserveCache();
const expect = chai.expect;

@@ -41,7 +42,10 @@ chai.use(require('sinon-chai'));

// Keep reference to main Logger constructor.
const Logger = proxyquire('../index.js', {
// Keep reference to main (Proxied) Logger constructor.
const ProxiedLogger = proxyquire('../index.js', {
winston: winston
});
// When no need to verify stub-calls use the Logger
const Logger = require('../index.js');
beforeEach(() => {

@@ -72,3 +76,3 @@ winston.transports = {

it('instantiates with `new` and overwrites the module', () => {
const logger = new Logger();
const logger = new require('../index.js'); // eslint-disable-line new-cap
expect(logger).to.equal(require('../index.js'));

@@ -79,5 +83,7 @@ });

const logger = new Logger({
transports: {
Console: {
level: 'verbose'
winston: {
transports: {
Console: {
level: 'verbose'
}
}

@@ -99,3 +105,3 @@ }

it('creates the default transports defined by config.transports', () => {
new Logger().get('TEST');
new ProxiedLogger().get('TEST');
expect(winston.transports.Console).to.have.been.calledWith({

@@ -109,3 +115,3 @@ level: 'info',

it('correctly sets the log-levels', () => {
new Logger().get('TEST');
new ProxiedLogger().get('TEST');
expect(winstonLogger.setLevels).to.have.been.calledWith(levels);

@@ -115,7 +121,9 @@ });

it('allows modifying the transports configuration', () => {
new Logger({
transports: {
LogstashUDP: {
bar: 'foo',
level: 'verbose'
new ProxiedLogger({
winston: {
transports: {
LogstashUDP: {
bar: 'foo',
level: 'verbose'
}
}

@@ -137,8 +145,10 @@ }

it('allows removal of default Console transport', () => {
new Logger({
transports: {
Console: null,
LogstashUDP: {
bar: 'foo',
level: 'verbose'
new ProxiedLogger({
winston: {
transports: {
Console: null,
LogstashUDP: {
bar: 'foo',
level: 'verbose'
}
}

@@ -176,3 +186,3 @@ }

it('allows passing extra transport configuration to the .get() function', () => {
new Logger().get('label', null, {
new ProxiedLogger().get('label', null, {
Console: {

@@ -190,2 +200,43 @@ extra: 'settings'

});
it('wont crash when colorize is set to true and level is trace', () => {
const log = new Logger().get('test');
expect(log.trace('test')).to.not.throw;
});
it('allows overriding of the level using configuration per named logger', () => {
const config = {
number1: {
level: 'trace'
},
winston: {
transports: {
LogstashUDP: {
level: 'verbose'
}
}
}
};
new ProxiedLogger(config).get('Number1');
expect(winston.transports.Console).to.have.been.calledWith({
level: 'trace',
colorize: true,
label: 'Number1'
});
expect(winston.transports.LogstashUDP).to.have.been.calledWith({
level: 'trace',
label: 'Number1'
});
new ProxiedLogger(config).get('Number2');
expect(winston.transports.Console).to.have.been.calledWith({
level: 'info',
colorize: true,
label: 'Number2'
});
expect(winston.transports.LogstashUDP).to.have.been.calledWith({
level: 'verbose',
label: 'Number2'
});
});
});
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc