|
1 | | -import getClient from './appinsights.init' |
2 | | -import { useRuntimeConfig } from '#imports' |
| 1 | +import getClient, { appInsights, addContextTelemetry } from './appinsights.init' |
| 2 | +import { useRuntimeConfig, useCookies } from '#imports' |
3 | 3 | import options from '#appinsights-config' |
4 | 4 |
|
5 | 5 | export default function (nitro) { |
6 | 6 | const client = getClient(options, useRuntimeConfig()) |
| 7 | + addContextTelemetry() |
7 | 8 | nitro.hooks.hook('render:response', (response, { event }) => { |
8 | 9 | if (typeof response.body === 'string' && (response.headers['Content-Type'] || response.headers['content-type'])?.includes('html')) { |
9 | 10 | // We deliberately do not await so as not to block the response |
10 | | - // appInsightsClient.trackRequest({ name: `${event.req.method} ${event.req.url}`, url: event.req.url, resultCode: response.statusCode, success: true, duration: 0 }) |
11 | | - client.trackNodeHttpRequest({ request: event.req, response }) |
| 11 | + const cookies = useCookies(event) |
| 12 | + const correlationContext = event.req.context.correlationContext |
| 13 | + appInsights.wrapWithCorrelationContext(() => { |
| 14 | + // console.log('ssss', appInsights.getCorrelationContext()) |
| 15 | + client.trackRequest({ |
| 16 | + name: `${event.req.method} ${event.req.url}`, |
| 17 | + url: event.req.url, |
| 18 | + resultCode: response.statusCode, |
| 19 | + success: response.statusCode === 200, |
| 20 | + duration: Date.now() - event.req.context.startTime, |
| 21 | + id: correlationContext.operation.parentId, |
| 22 | + contextObjects: { |
| 23 | + authData: { |
| 24 | + userId: cookies.ai_user ? cookies.ai_user.split('|')[0] : undefined, |
| 25 | + userAuthUserId: event.req.context.userAuthUserId, |
| 26 | + sessionId: cookies.ai_session |
| 27 | + } |
| 28 | + } |
| 29 | + }) |
| 30 | + }, correlationContext)() |
12 | 31 | } |
13 | 32 | }) |
14 | 33 | } |
0 commit comments