UNPKG

@flashcoffee/fclogger

Version:
144 lines (113 loc) 3.29 kB
# fclogger ## Installation ```sh $ yarn add @flashcoffee/fclogger ``` ## Setup Set required environment variable for credentials ``` SERVICE_NAME=order-service-dev-th ENABLE_LOG_REDACTION=false (default true) LOG_REDACTION_FIELDS=creditCardNumber,password,streetAddress,credentials (optional) ``` ## Usage ### Simple Log (With Level printed) ```typescript import {log} from '@flashcoffee/fclogger'; log.info('endpoint fired'); // [INFO] endpoint fired log.info('payload:', {foo: 'bar'}); // [INFO] payload: { "foo": "bar" } log.error('error occur:', err); // [ERROR] error occur: error name { "stack": "Error: error name" } ``` ### Formatted {"message"} Log (example: Datadog) ```typescript import {log} from '@flashcoffee/fclogger'; log.dd.info({ eventName: 'some-event', module: 'order-service', data: {foo: 'bar'}, serviceVersion: '1.0.0', appVersion: '2.25.3', }); // output // { "appVersion": "2.25.3", "data": { "foo": "bar" }, "dd": { "service": "order-service-dev-th", "span_id": "xx", "trace_id": "xx" }, "eventName": "some-event", "level": "info", "message": "[BE] order-service-dev-th: some-event", "module": "order-service", "service": "order-service-dev-th", "serviceVersion": "1.0.0" } log.dd.error({ eventName: 'some-event', module: 'order-service', data: {foo: 'bar'}, errorObject: {reason: 'why'}, serviceVersion: '1.0.0', appVersion: '2.25.3', }); // output // { "appVersion": "2.25.3", "data": { "foo": "bar" }, "dd": { "service": "order-service-dev-th", "span_id": "xx", "trace_id": "xx" }, "errorObject": "{\"reason\":\"why\"}", "eventName": "some-event", "level": "error", "message": "[BE] order-service-dev-th: some-event", "module": "order-service", "service": "order-service-dev-th", "serviceVersion": "1.0.0" } ``` ### JSON Log (example: Plain, DDMetrics) ```typescript import {log} from '@flashcoffee/fclogger'; // Plain JSON log.json({ foo: 'bar', zoo: 'bir' }); // output // { "foo": "bar", "zoo": "bir" } // DD Metrics Purpose log.json({ e: 1658977035.238, m: 'fc.order.creation', t: [ 'status:CREATED', 'country:th' ], v: 1 }); // output: // { "e": 1658977035.238, "m": "fc.order.creation", "t": [ "status:CREATED", "country:th" ], "v": 1 } ``` ### NestJS Module Approach ```typescript import {LoggerModule, Logger} from '@flashcoffee/fclogger'; @Module({ imports: [LoggerModule], controllers: [SomeController], providers: [SomeService, RedisRepository], }) class SomeModule {} @Injectable() export class SomeService { constructor( private readonly log: Logger, private readonly redis: RedisRepository ) {} public func() { // simple this.log.info('payload:', {foo: 'bar'}); // datadog this.log.dd.info({ eventName: 'some-event', module: 'order-service', data: {foo: 'bar'}, serviceVersion: '1.0.0', appVersion: '2.25.3', }); // plain json this.log.json({ e: 1658977035.238, m: 'fc.order.creation', t: [ 'status:CREATED', 'country:th' ], v: 1 }); } } @Injectable() export class RedisRepository { constructor(private readonly log: Logger) {} public getCache(key: string) { // simple this.log.info(`attempt to get cache ${key}`); } } ```