@vouchfor/libs
v1.0.3
Published
Common libraries for backend
Downloads
116
Readme
Share libs
included modules
dotenv
@logtail/node
@logtail/winston
@sentry/node
@sentry/tracing
winston
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.git
ENV variables
ENV=dev|staging|prod
LOGTAIL_SOURCE_TOKE=xxxxxx
SENTRY_DSN=xxxxxxx
Logger
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] Hi
get winstan logger instance directly
import { getLogger } from '@vouchfor/libs';
const logger = getLogger();
logger.info('Hi');
// --> [INFO] Hi
getLogger
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!');
});