gopuff / appinsights-logger

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)


Languages

Language:TypeScript 91.4%Language:JavaScript 7.5%Language:Shell 1.1%