![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@5app/logger
Advanced tools
Simple console logger that outputs json in prod and pretty messages on dev
npm install --save @5app/logger
const logger = require('@5app/logger');
logger.info('An email was sent', {
email: 'customer@5app.com',
template: 'template1',
});
logger.error(new Error('Unknown playlist 123'));
The logger can optionally be customised using the following environment variables:
LOGS_FORMAT
: if set to json
, the logger will log messages in json format instead of pretty messages (default behaviour).LOGS_LEVEL
: minimum logging level, by default it will be debug
. Accepted values are 'debug'
, 'info'
, 'warn'
, and 'error'
TAG
: release tag (e.g. docker image tag) to be added to the log messagesLogging levels are (from lower to higher priority): 'debug'
, 'info'
, 'warn'
, and 'error'
.
The logger provides the logging functions with the following signatures: logger.<level>(message, objectOrError)
Here is an example of how the logger can be used:
logger.error('An error happened', new ApiError('The api call failed', 404)); // will log the message, the error message, the stack trace, and the statusCode error property
logger.warn('Be warned', {a: 1, b: Date.now(), c: 'some string'});
logger.info('An event happened', {a: 1, b: Date.now(), c: 'some string'});
logger.debug('A minor operation', {a: 1, b: Date.now(), c: 'some string'});
In addition to providing a context object, you can also use logger.addContext
to provide a function which will be called on every log to get a context object.
This can be helpful if you are using async_hooks or cls-hooked to store request metadata similarly to thread-local storage.
For instance, you can do the following without having to explicitly pass the correlationId
to each log:
const asyncLocalStorage = new AsyncLocalStorage();
expressApp.use((req, res, next) {
const correlationId = req.get('X-Correlation-Id') || uuidV4();
asyncLocalStorage.run({correlationId}, () => next());
});
logger.addContext(() => asyncLocalStorage.getStore());
logger.info('User profile updated', {userId: 1234});
And the output will look like:
{"level":"info","timestamp":"2021-02-23T17:55:43.011Z","correlationId":"12bf5b37-e0b8-56e0-8dcf-dc8c4aefc123","userId":1234}
FAQs
Simple logger used in 5app microservices
The npm package @5app/logger receives a total of 439 weekly downloads. As such, @5app/logger popularity was classified as not popular.
We found that @5app/logger demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.