Socket
Socket
Sign inDemoInstall

bs-logger

Package Overview
Dependencies
2
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.1 to 0.2.1

dist/logger/root.d.ts

6

CHANGELOG.md
# Changelog
## 0.1.0
## 0.2.1
- [FEATURE] Adds testing helpers
## 0.1.1
- First release

6

dist/index.d.ts

@@ -5,5 +5,5 @@ import { LogMethod, Logger, createLogger, lastSequenceNumber, resetSequence } from './logger';

import { LogMessage, LogMessageFormatter, LogMessageTranslator, registerLogFormatter, resetLogFormatters } from './logger/message';
import { rootLogger, setup } from './logger/root';
import { DEFAULT_LOG_TARGET, LogTarget, parseLogTargets } from './logger/target';
declare const __setup: (factory?: () => Logger) => void;
declare const logger: Logger;
export { logger as default, logger, createLogger, DEFAULT_LOG_TARGET, lastSequenceNumber, LogContext, LogContexts, Logger, LogLevelName, logLevelNameFor, LogLevels, LogMessage, LogMessageFormatter, LogMessageTranslator, LogMethod, LogTarget, parseLogLevel, parseLogTargets, registerLogFormatter, resetLogFormatters, resetSequence, __setup, };
import * as testing from './testing';
export { rootLogger as default, rootLogger as logger, setup, createLogger, DEFAULT_LOG_TARGET, lastSequenceNumber, LogContext, LogContexts, Logger, LogLevelName, logLevelNameFor, LogLevels, LogMessage, LogMessageFormatter, LogMessageTranslator, LogMethod, LogTarget, parseLogLevel, parseLogTargets, registerLogFormatter, resetLogFormatters, resetSequence, testing, };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var e_1, _a;
var logger_1 = require("./logger");

@@ -18,52 +17,11 @@ exports.createLogger = logger_1.createLogger;

exports.resetLogFormatters = message_1.resetLogFormatters;
var root_1 = require("./logger/root");
exports.default = root_1.rootLogger;
exports.logger = root_1.rootLogger;
exports.setup = root_1.setup;
var target_1 = require("./logger/target");
exports.DEFAULT_LOG_TARGET = target_1.DEFAULT_LOG_TARGET;
exports.parseLogTargets = target_1.parseLogTargets;
var cache_getters_1 = require("./utils/cache-getters");
var cache;
// tslint:disable-next-line:variable-name
var __setup = function (factory) {
if (factory === void 0) { factory = function () { return logger_1.createLogger({ targets: process.env.LOG_TARGETS }); }; }
cache = cache_getters_1.cacheGetters({
get root() {
return factory();
},
}, 'root');
};
exports.__setup = __setup;
// creates a lazy logger as default export
var logger = (function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return cache.root.apply(cache, tslib_1.__spread(args));
});
exports.default = logger;
exports.logger = logger;
var props = tslib_1.__spread(level_1.LogLevelNames, ['child', 'wrap']);
var _loop_1 = function (prop) {
Object.defineProperty(logger, prop, {
enumerable: true,
configurable: true,
get: function () {
return cache.root[prop];
},
});
};
try {
for (var props_1 = tslib_1.__values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {
var prop = props_1_1.value;
_loop_1(prop);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);
}
finally { if (e_1) throw e_1.error; }
}
cache_getters_1.cacheGetters.apply(void 0, tslib_1.__spread([logger], props));
__setup();
var testing = tslib_1.__importStar(require("./testing"));
exports.testing = testing;
//# sourceMappingURL=index.js.map

@@ -37,2 +37,2 @@ import { LogContext } from './context';

declare const createLogger: ({ context: baseContext, targets: logTargets, translate: logTranslator, }?: CreateLoggerOptions) => Logger;
export { createLogger, lastSequenceNumber, Logger, LogMethod, resetSequence };
export { createLogger, lastSequenceNumber, Logger, LogMethod, resetSequence, CreateLoggerOptions };
{
"name": "bs-logger",
"version": "0.1.1",
"version": "0.2.1",
"description": "Bare simple logger for NodeJS",

@@ -5,0 +5,0 @@ "author": "Huafu Gandon <huafu.gandon@gmail.com>",

@@ -192,2 +192,79 @@ <img align="right" src="icon.png"></img>

### Testing
The whole `testing` namespace has useful helpers for using BSLogger while unit testing your product.
In your tests you would usually prefer not having any logging to happen, or you would like to check what has been logged but without actually logging it to any target.
The `testing` namespace holds all testing utilities:
```js
import { testing } from 'bs-logger'
```
- If you use the root logger, here is how to disable its output:
```js
testing.setup()
```
and the `logger` (or `default`) export will become a `LoggerMock` instance (see below).
- If you create logger(s) using `createLogger`, when testing use the `testing.createLoggerMock` instead. It accepts the same first argument, with an extra second argument, optional, being the `LogTargetMock` to be used (see below).
#### LoggerMock
Loggers created using the `testing` namespace will have one and only one log target being a `LogTargetMock`, and that target will be set on the `target` extra property of the logger.
Here are the extra properties of `LogTargetMock` which you can then use for testing:
- **messages** `LogMessage[]`: all log message objects which would have normally be logged
- **last** `LogMessage`: the last one being logged
- **trace** `LogMessage[]`: all log message objects with `trace` level
- **last** `LogMessage`: last one with `trace` level
- **debug** `LogMessage[]`: all log message objects with `debug` level
- **last** `LogMessage`: last one with `debug` level
- ...
- **lines** `string[]`: all formatted log message lines which would have normally be logged
- **last** `string`: the last one being logged
- **trace** `string[]`: all formatted log message lines with `trace` level
- **last** `string`: last one with `trace` level
- **debug** `string[]`: all formatted log message lines with `debug` level
- **last** `string`: last one with `debug` level
- ...
- **clear** `() => void`: method to clear all log message objects and formatted lines
- **filteredMessages** `(level: number | null, untilLevel?: number) => LogMessage[]`: method to filter log message objects
- **filteredLins** `(level: number | null, untilLevel?: number) => string[]`: method to filter formatted log message lines
#### Example
Let's say you have a `logger.js` file in which you create the logger for your app:
```js
// file: logger.js
import { testing, createLogger, LogContexts } from 'bs-logger';
const factory = process.env.TEST ? testing.createLoggerMock : createLogger;
export default factory({ [LogContexts.application]: 'foo' });
```
In a test you could:
```js
import logger from './logger';
// in `fetch(url)` you'd use the logger like `logger.debug({url}, 'GET')` when the request is actually made
import fetch from './http';
test('it should cache request', () => {
logger.target.clear();
fetch('http://foo.bar/dummy.json');
expect(logger.target.messages.length).toBe(1);
fetch('http://foo.bar/dummy.json');
expect(logger.target.messages.length).toBe(1);
// you can also expect on the message:
expect(logger.target.messages.last.message).toBe('GET')
expect(logger.target.messages.last.context.url).toBe('http://foo.bar/dummy.json')
// or (mock target formater prefix the message with `[level:xxx] ` when there is a level)
expect(logger.target.lines.last).toBe('[level:20] GET')
// or filtering with level:
expect(logger.target.lines.debug.last).toBe('[level:20] GET')
});
```
## Installing

@@ -194,0 +271,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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