Application Insights 无法跟踪节点中间件中的请求
Application Insights can't track request in node middleware
我正在为我的 CMS 使用 Strapi(构建在 Koa 之上)。我添加了一个中间件,它在每次向服务器发出请求时触发。此中间件初始化 appInsights。
我能够从下面的代码中获取跟踪日志,但我一直没有得到任何请求结果。我在 Nuxt SPA 上使用了同一 AppInsights 资源的密钥,它从这个 Strapi 后端获取数据,为此,我可以看到所有发出的请求。所以应该正确设置资源。
这是中间件的代码。所有跟踪消息和控制台日志都按预期注册。
const appInsights = require('applicationinsights');
module.exports = () => {
let isInit = false;
return {
initialize: function(cb) {
strapi.app.use(async (ctx, next) => {
if (!isInit) {
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
isInit = true;
}
await next();
appInsights.defaultClient.trackNodeHttpRequest({
request: ctx.request,
response: ctx.response
});
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on all http calls'
});
console.log('track node http request');
});
cb();
}
};
};
你必须把你的
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
在你的 strapi.app.use
之外
module.exports = () => {
return {
initialize: function(cb) {
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
strapi.app.use(async (ctx, next) => {
await next();
appInsights.defaultClient.trackNodeHttpRequest({
request: ctx.request,
response: ctx.response
});
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on all http calls'
});
console.log('track node http request');
});
cb();
}
};
};
通过这种方式,您的 start
将在服务器启动时被调用一次。
我正在为我的 CMS 使用 Strapi(构建在 Koa 之上)。我添加了一个中间件,它在每次向服务器发出请求时触发。此中间件初始化 appInsights。
我能够从下面的代码中获取跟踪日志,但我一直没有得到任何请求结果。我在 Nuxt SPA 上使用了同一 AppInsights 资源的密钥,它从这个 Strapi 后端获取数据,为此,我可以看到所有发出的请求。所以应该正确设置资源。
这是中间件的代码。所有跟踪消息和控制台日志都按预期注册。
const appInsights = require('applicationinsights');
module.exports = () => {
let isInit = false;
return {
initialize: function(cb) {
strapi.app.use(async (ctx, next) => {
if (!isInit) {
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
isInit = true;
}
await next();
appInsights.defaultClient.trackNodeHttpRequest({
request: ctx.request,
response: ctx.response
});
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on all http calls'
});
console.log('track node http request');
});
cb();
}
};
};
你必须把你的
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
在你的 strapi.app.use
module.exports = () => {
return {
initialize: function(cb) {
appInsights.setup().start();
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on init'
});
console.log('app insights setup');
strapi.app.use(async (ctx, next) => {
await next();
appInsights.defaultClient.trackNodeHttpRequest({
request: ctx.request,
response: ctx.response
});
appInsights.defaultClient.trackTrace({
message: 'STRAPI: trace on all http calls'
});
console.log('track node http request');
});
cb();
}
};
};
通过这种方式,您的 start
将在服务器启动时被调用一次。