File

shared/common/modules/apm/apm.service.ts

Index

Methods

Constructor

constructor(apmInstance: APM.Agent)
Parameters :
Name Type Optional
apmInstance APM.Agent No

Methods

Public addErrorFilter
addErrorFilter(filter: ApmFilter)
Parameters :
Name Type Optional
filter ApmFilter No
Returns : void
Public addFilter
addFilter(filter: ApmFilter)
Parameters :
Name Type Optional
filter ApmFilter No
Returns : void
Public addSpanFilter
addSpanFilter(filter: ApmFilter)
Parameters :
Name Type Optional
filter ApmFilter No
Returns : void
Public addTransactionFilter
addTransactionFilter(filter: ApmFilter)
Parameters :
Name Type Optional
filter ApmFilter No
Returns : void
Public captureError
captureError(error: ApmError)
Parameters :
Name Type Optional
error ApmError No
Returns : void
Public flush
flush(callback: (err: Error) => void)
Parameters :
Name Type Optional
callback function No
Returns : void
Public setCustomContext
setCustomContext(data: LooseObject)
Parameters :
Name Type Optional
data LooseObject No
Returns : void
Public setUserContext
setUserContext(undefined: literal type)
Parameters :
Name Type Optional
literal type No
Returns : void
Public startTransaction
startTransaction(name: string | null, type: string | null)
Parameters :
Name Type Optional
name string | null No
type string | null No
Returns : APM.Transaction
import {Inject, Injectable} from '@nestjs/common';
import {APM_INSTANCE} from './constants';
import {ApmError, ApmFilter} from './interfaces';
import * as APM from 'elastic-apm-node';
import {LooseObject} from "../../types";

@Injectable()
export class ApmService {
  constructor(
    @Inject(APM_INSTANCE)
    protected readonly apmInstance: APM.Agent,
  ) {
  }

  public startTransaction(name: string | null, type: string | null): APM.Transaction {
    return this.apmInstance.startTransaction(name, type);
  }

  public addFilter(filter: ApmFilter): void {
    if (typeof filter === 'function') {
      this.apmInstance.addFilter(filter);
    } else {
      this.apmInstance.addFilter(filter.filter);
    }
  }

  public addErrorFilter(filter: ApmFilter): void {
    if (typeof filter === 'function') {
      this.apmInstance.addErrorFilter(filter);
    } else {
      this.apmInstance.addErrorFilter(filter.filter);
    }
  }

  public addTransactionFilter(filter: ApmFilter): void {
    if (typeof filter === 'function') {
      this.apmInstance.addTransactionFilter(filter);
    } else {
      this.apmInstance.addTransactionFilter(filter.filter);
    }
  }

  public addSpanFilter(filter: ApmFilter): void {
    if (typeof filter === 'function') {
      this.apmInstance.addSpanFilter(filter);
    } else {
      this.apmInstance.addSpanFilter(filter.filter);
    }
  }

  public captureError(error: ApmError): void {
    this.apmInstance.captureError(error);
  }

  public flush(callback: (err: Error) => void): void {
    this.apmInstance.flush(callback);
  }

  public setUserContext({id, email, username}:
                          {
                            id?: string | number,
                            email?: string,
                            username?: string,
                          }
  ): void {
    if (id !== undefined || email !== undefined || username !== undefined) {
      this.apmInstance.setUserContext({
        id,
        email,
        username,
      });
    }
  }

  public setCustomContext(data: LooseObject): void {
    this.apmInstance.setCustomContext(data);
  }
}

results matching ""

    No results matching ""