![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.
strapi-plugin-request-id
Advanced tools
Add a unique id to each request made to your server and track your users' activity in the logs.
Add a unique id to each request made to your server and track your users' activity in the logs.
request id
and correlation id
to each request.request id
and correlation id
when a message is logged.Strapi v4 is required.
Join the Discord Community to give your feedback.
yarn add strapi-plugin-request-id
or
npm i strapi-plugin-request-id
In config/plugins.js
, add:
module.exports = ({ env }) => ({
//...
"request-id": {
enabled: true,
},
//...
});
request-id
middleware:In config/middlewares.js
, add the middleware at the bottom of the list:
module.exports = [
//...
"plugin::request-id.request-id",
];
When a request is received, a unique request id
and correlation id
are added to it.
These ids have different meanings:
request id
: Used to track a user's actions on the server only. Each time a request is received, a new request id
is generated, even if the associated header is set.correlation id
: Used to track a user's actions across multiple services. The correlation id
is either set from the headers of the request or generated if none is provided.☝️ If the header of the request contains the property
X-Correlation-Id
, this value is used as thecorrelation id
instead generating a new one.
In config/plugins.js
:
module.exports = ({ env }) => ({
//...
"request-id": {
enabled: true,
config: {
/**
* Define the header to use to get/set the correlation id.
*/
correlationIdHeader: "X-Amzn-Trace-Id", // default: "X-Correlation-Id".
},
},
//...
});
/**
* Get the service "request-id".
*/
strapi.plugin("request-id").service("request-id");
/**
* Get the correlation id of the request.
*/
getCorrelationId(): string;
/**
* Get the request id of the request.
*/
getRequestId(): string;
The request id
and correlation id
are automatically logged when a message is logged using the strapi logger.
This code:
const endpoint = (ctx) => {
const { user } = ctx.state;
strapi.log.info(`user ${user.id} was there!`);
ctx.status = 200;
};
Will produce the logs:
{
"level": "info",
"message": "user 1 was there!",
"timestamp": "2022-05-29 17:26:19",
"x-correlation-id": "e5b97199-9003-4c36-8ead-28186e3f4a4f",
"x-request-id": "04dd66c9-3d3e-4188-8ae8-32703d864862"
}
You can then track user 1
's activity by filtering the logs with x-request-id="04dd66c9-3d3e-4188-8ae8-32703d864862"
, or accross your services using x-correlation-id
.
By default, strapi doesn't display the logs as json in the console. If you want to see the request id
and correlation id
while developing, create the file config/logger.js
and use this configuration:
const { winston } = require("@strapi/logger");
module.exports = {
transports: [
new winston.transports.Console({
level: "silly",
format: winston.format.combine(
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
winston.format.json()
),
}),
],
};
The request id
and correlation id
are added to the headers of the response. They can be accessed through the ctx.response
object:
const endpoint = (ctx) => {
const requestIdService = strapi.plugin("request-id").service("request-id");
const requestId = requestIdService.getRequestId();
const correlationId = requestIdService.getCorrelationId();
const res = await fetch(`my-other-service/endpoint`, {
method: "GET",
headers: {
// Add the correlation id when calling an external service.
"X-Correlation-Id": correlationId
},
});
ctx.body = { data: res.data };
};
By default, the correlation id
is associated to the header X-Correlation-Id
. It is configurable:
In config/plugins.js
:
module.exports = ({ env }) => ({
//...
"request-id": {
enabled: true,
config: {
correlationIdHeader: "X-Amzn-Trace-Id",
},
},
//...
});
Now, let's say the server received a request with the header "X-Amzn-Trace-Id": "my-custom-trace-id"
. It will produce the logs:
{
"level": "info",
"message": "user 1 was there!",
"timestamp": "2022-05-29 17:26:19",
"x-amzn-trace-id": "my-custom-trace-id",
"x-request-id": "04dd66c9-3d3e-4188-8ae8-32703d864862"
}
The response will also have the header "X-Amzn-Trace-Id": "my-custom-trace-id"
.
Baboo - @Baboo7
FAQs
Add a unique id to each request made to your server and track your users' activity in the logs.
The npm package strapi-plugin-request-id receives a total of 27 weekly downloads. As such, strapi-plugin-request-id popularity was classified as not popular.
We found that strapi-plugin-request-id demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.