Skip to content
This repository was archived by the owner on Sep 22, 2023. It is now read-only.
/ appinsights-logger Public archive

nodejs wrapper for App Insights, compatible with Azure Functions (Javascript)

Notifications You must be signed in to change notification settings

gopuff/appinsights-logger

Repository files navigation

AppInsights logger

wrapper for AI setup, compatible with Azure Functions

Install

npm i appinsights-logger --save

Environment setup

Just set ENV variable APPINSIGHTS_INSTRUMENTATIONKEY

Set the AI_MESSAGE_NAMESPACE ENV variable to identify message source. Format is [myCompany].[AgileTeam].[Repo] (foocompany.Architecture.Appinsights)

Usage:

const { trackEvent, trackException } = require('appinsights-logger')

trackEvent({ name: 'TEST', properties: { myProp: 'my value' } })

const ex = new Error('some error')
trackException({ exception: ex, properties: { myProp: 'my value' } })

Advanced usage

HTTP request tracking:

import { markDependency, measureDependency } from 'appinsights-logger'

const marker = markDependency('HTTP', 'GET /products')
try {
  const url = 'https://domain.com/api/products'
  const locations = await requestPromise(url)
  measureDependency(marker, url)
} catch(ex) {
  measureDependency(marker, url, false)
  // could also trackException(ex) here
}

Cosmos query tracking:

dependency tracking is useful for measuring latency of remote calls (SQL, HTTP) and also failures

import { markDependency, measureDependency } from 'appinsights-logger'

const marker = markDependency('cosmos', 'query collection')
try {
  const sql = 'select top 100 from c'
  const locations = await cosmosDb.items.query(sql) // pseudo-code cosmos query
  measureDependency(marker, sql)
} catch(ex) {
  measureDependency(marker, sql, false)
  // could also trackException(ex) here
}

Debug Event tracking

customEvents are powerful because you can query the logs by the customDimensions object

import { trackDebugEvent } from from 'appinsights-logger'

// This 'debug' event will only log if the DEBUG_INSIGHTS="true" env var is set
trackDebugEvent({ name: 'new order',  properties: { order }, measurements: { productCount: order.products.length } }) 

Run E2E Test

cp .env.example .env

fill in .env with App Insight key

npm run build
npm test

About

nodejs wrapper for App Insights, compatible with Azure Functions (Javascript)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 10