@vouchfor/libs
v1.0.4
Published
Common libraries for backend
Readme
Share libs
included modules
dotenv@logtail/node@logtail/winston@sentry/node@sentry/tracingwinston
Installation
// will need to publish this module to npm registry with private account
npm i @vouchfor/libs
// or directly from private repo
npm i git+ssh://[email protected]:VouchAU/vouch-libs.gitENV variables
ENV=dev|staging|prod
LOGTAIL_SOURCE_TOKE=xxxxxx
SENTRY_DSN=xxxxxxxLogger
Logger class is constructed using winston and logtail as the transport layer.
To channel the logs to Logtail, it requires LOGTAIL_SOURCE_TOKEN in the .env file, or register the token to the config module:
import { Logger } from '@vouchfor/libs';
const logger = new Logger();
logger.info('Hi');
// --> [INFO] Higet winstan logger instance directly
import { getLogger } from '@vouchfor/libs';
const logger = getLogger();
logger.info('Hi');
// --> [INFO] HigetLogger support winston transformer and format method passing through the config options
const logger = getLogger({
transformer: (info) => ({...info, foo: process.env.BAR}),
format: (info) => `[LOGGER] ${JSON.stringiy(info)}`
});
logger.info('Hi');
// --> [LOGGER] {"message": "Hi", "foo": "bar", ... }
Injecting metadata per process/request.
import { Logger } from '@vouchfor/libs';
const logger = new Logger({
metadata: {
requestId: "1234-123-123-1234",
}
});
logger.info('Hi');
// --> [INFO] Hi {"metadata":{"requestId":"1234-123-123-1234"}}Logtail source_token can be injected through the class initialisation.
import { Logger } from '@vouchfor/libs';
const logger = new Logger({
token: 'xxxxxxx',
metadata: {
requestId: "1234-123-123-1234",
}
});
logger.info('Hi');
// --> [INFO] Hi {"metadata":{"requestId":"1234-123-123-1234"}}Sentry
Sentry DSN is needed in .env file as in .env.
import { Sentry } from '@vouchfor/libs';
try {
throw new Error('123');
} catch (err) {
Sentry.captureException(err);
}
To use Sentry in lambda, it requires @sentry/serverless
import { Sentry } from '@vouchfor/libs';
import { AWSLambda } from '@sentry/serverless';
exports.handler = AWSLambda.wrapHandler(async (event, context) => {
throw new Error('oh, hello there!');
});
// or just use the `@sentry/serverless` module
import * as Sentry from '@sentry/serverless';
Sentry.init({
...
})
exports.handler = Sentry.AWSLambda.wrapHandler(async (event, context) => {
throw new Error('oh, hello there!');
});
