From d626f68a9f282fcd57a63cdb52f8b98f1b2f29e5 Mon Sep 17 00:00:00 2001 From: DoctorVoid Date: Thu, 20 Feb 2020 13:48:53 +0200 Subject: [PATCH 1/3] feat: added context to the logs --- src/logger/polaris-graphql-logger.ts | 56 +++++++++++++++++++--------- test/context-util.ts | 12 +++--- test/polaris-graphql-logger.test.ts | 52 +++++++++++--------------- 3 files changed, 67 insertions(+), 53 deletions(-) diff --git a/src/logger/polaris-graphql-logger.ts b/src/logger/polaris-graphql-logger.ts index 56509cb..4080a5a 100644 --- a/src/logger/polaris-graphql-logger.ts +++ b/src/logger/polaris-graphql-logger.ts @@ -7,12 +7,11 @@ export class PolarisGraphQLLogger extends PolarisLogger { super(loggerConfig, applicationProperties); } - public static buildLogProperties( - context?: PolarisGraphQLContext, - polarisLogProperties: PolarisLogProperties = {}, + private static buildLog( + context: PolarisGraphQLContext, + polarisLogProperties?: PolarisLogProperties, ): GraphQLLogProperties { const contextProperties: GraphQLLogProperties | undefined = { - operationName: context?.request?.operationName, messageId: context?.requestHeaders?.requestId, eventKind: polarisLogProperties?.eventKind, reality: { @@ -30,34 +29,57 @@ export class PolarisGraphQLLogger extends PolarisLogger { name: context?.requestHeaders?.requestingSystemName, id: context?.requestHeaders?.requestingSystemId, }, - requestQuery: context?.request?.query, + requestQuery: { + query: context?.request?.query, + operationName: context?.request?.operationName, + variables: context?.request?.polarisVariables, + }, requestingHost: polarisLogProperties?.request?.requestingHost, }, + response: context?.response, }; return { ...contextProperties, ...polarisLogProperties }; } - warn(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.warn(message, graphqlLogProperties); + warn(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.warn( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } - info(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.info(message, graphqlLogProperties); + info(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.info( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } - error(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.error(message, graphqlLogProperties); + error(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.error( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } - trace(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.trace(message, graphqlLogProperties); + trace(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.trace( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } - debug(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.debug(message, graphqlLogProperties); + debug(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.debug( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } - fatal(message: string, graphqlLogProperties?: GraphQLLogProperties): void { - super.fatal(message, graphqlLogProperties); + fatal(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { + super.fatal( + message, + PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), + ); } } diff --git a/test/context-util.ts b/test/context-util.ts index c56c923..cc7a71c 100644 --- a/test/context-util.ts +++ b/test/context-util.ts @@ -1,13 +1,15 @@ -import { PolarisRequestHeaders } from '@enigmatis/polaris-common'; -export const requestQuery = 'foo'; +import { PolarisGraphQLContext, PolarisRequestHeaders } from '@enigmatis/polaris-common'; +export const query = 'foo'; +export const operationName = 'foo'; +export const response = jest.fn(); export const getContextWithRequestHeaders = ( requestHeaders: PolarisRequestHeaders, requestingIp: string, -) => { +): PolarisGraphQLContext => { return { requestHeaders, - request: { query: requestQuery }, - response: jest.fn(), + request: { query, operationName }, + response, returnedExtensions: { globalDataVersion: 0 }, responseHeaders: {}, clientIp: requestingIp, diff --git a/test/polaris-graphql-logger.test.ts b/test/polaris-graphql-logger.test.ts index ec90e92..2850293 100644 --- a/test/polaris-graphql-logger.test.ts +++ b/test/polaris-graphql-logger.test.ts @@ -4,7 +4,7 @@ import { LoggerConfiguration, PolarisLogProperties, } from '@enigmatis/polaris-logs'; -import { getContextWithRequestHeaders, requestQuery } from './context-util'; +import { getContextWithRequestHeaders, operationName, query, response } from './context-util'; const messageId = '0'; const upn = 'upn'; @@ -30,12 +30,9 @@ Object.assign(polarisGQLLogger.logger, loggerImplMock); describe('build log properties tests', () => { test('info, context empty and log properties exist, only log properties returned', () => { - polarisGQLLogger.info( - 'context is empty', - PolarisGraphQLLogger.buildLogProperties(undefined, { - reality: { id: 0, type: 'operational' }, - }), - ); + polarisGQLLogger.info('context is empty', undefined, { + reality: { id: 0, type: 'operational' }, + }); expect(loggerImplMock.info).toBeCalledWith({ message: 'context is empty', messageId: expect.anything(), @@ -54,20 +51,23 @@ describe('build log properties tests', () => { }, requestingIp, ); - const x = PolarisGraphQLLogger.buildLogProperties(context); const message = 'context is full'; - polarisGQLLogger.info(message, x); + polarisGQLLogger.info(message, context); expect(loggerImplMock.info).toBeCalledWith({ message, messageId, eventKindDescription: { requestingSystemId }, reality: { id: realityId }, request: { - requestQuery, + requestQuery: { + query, + operationName, + }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, }, + response, }); }); @@ -85,10 +85,7 @@ describe('build log properties tests', () => { const message = 'context is full'; const eventKind = '123'; const polarisLogProperties: PolarisLogProperties = { eventKind }; - polarisGQLLogger.info( - message, - PolarisGraphQLLogger.buildLogProperties(context, polarisLogProperties), - ); + polarisGQLLogger.info(message, context, polarisLogProperties); expect(loggerImplMock.info).toBeCalledWith({ message, messageId, @@ -96,11 +93,12 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId }, reality: { id: realityId }, request: { - requestQuery, + requestQuery: { query, operationName }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, }, + response, }); }); @@ -117,12 +115,8 @@ describe('build log properties tests', () => { ); const message = 'context is full'; const eventKind = '123'; - const operationName = 'operationName'; - const polarisLogProperties: GraphQLLogProperties = { eventKind, operationName }; - polarisGQLLogger.info( - message, - PolarisGraphQLLogger.buildLogProperties(context, polarisLogProperties), - ); + const polarisLogProperties: GraphQLLogProperties = { eventKind }; + polarisGQLLogger.info(message, context, polarisLogProperties); expect(loggerImplMock.info).toBeCalledWith({ message, messageId, @@ -130,12 +124,12 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId }, reality: { id: realityId }, request: { - requestQuery, + requestQuery: { query, operationName }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, }, - operationName, + response, }); }); test('info, graphql log properties exist, with application properties', () => { @@ -160,12 +154,8 @@ describe('build log properties tests', () => { ); const message = 'context is full'; const eventKind = '123'; - const operationName = 'operationName'; - const polarisLogProperties: GraphQLLogProperties = { eventKind, operationName }; - polarisGQLLoggerWithAppProperties.info( - message, - PolarisGraphQLLogger.buildLogProperties(context, polarisLogProperties), - ); + const polarisLogProperties: GraphQLLogProperties = { eventKind }; + polarisGQLLoggerWithAppProperties.info(message, context, polarisLogProperties); expect(loggerImplMock.info).toBeCalledWith({ message, component: appProps.component, @@ -175,15 +165,15 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId, systemId: appProps.id }, reality: { id: realityId }, request: { - requestQuery, + requestQuery: { query, operationName }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, }, - operationName, version: appProps.version, systemName: appProps.name, systemId: appProps.id, + response, }); }); }); From c50fa7375d05bb8c1d5f6d5e83e67a141f1b51dc Mon Sep 17 00:00:00 2001 From: DoctorVoid Date: Thu, 20 Feb 2020 17:17:48 +0200 Subject: [PATCH 2/3] fix: progress with context tests --- package-lock.json | 12 +- package.json | 7 +- src/logger/graphql-log-properties.ts | 4 +- src/logger/polaris-graphql-logger.ts | 122 ++++++++++++--------- test/polaris-graphql-logger.test.ts | 6 +- type-declarations/winston-custom-levels.ts | 8 ++ 6 files changed, 91 insertions(+), 68 deletions(-) create mode 100644 type-declarations/winston-custom-levels.ts diff --git a/package-lock.json b/package-lock.json index 0246d1e..b814dde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1102,9 +1102,9 @@ } }, "@enigmatis/polaris-logs": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@enigmatis/polaris-logs/-/polaris-logs-2.7.1.tgz", - "integrity": "sha512-pxIsqdXNQal2dYC63dKoD/3sgoa1dW+2jYOXY3zgdU8JaO8tQtdk21qnMM9zJDF4gMgfGQaF3ypx02MGrRcMhQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@enigmatis/polaris-logs/-/polaris-logs-2.8.1.tgz", + "integrity": "sha512-3h/x1RXs4vle2NtM9ErJmZDJ19Sqe7uYNufnNTkOMrIU1f8d+nHHN2cCwdT57YFWBj7YIwOxOkCOspK5pfSvEA==", "requires": { "@enigmatis/polaris-common": "^1.0.12", "@types/serialize-error": "^2.1.0", @@ -1815,9 +1815,9 @@ } }, "@types/node": { - "version": "12.12.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.27.tgz", - "integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==", + "version": "12.12.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.28.tgz", + "integrity": "sha512-g73GJYJDXgf0jqg+P9S8h2acWbDXNkoCX8DLtJVu7Fkn788pzQ/oJsrdJz/2JejRf/SjfZaAhsw+3nd1D5EWGg==", "dev": true }, "@types/normalize-package-data": { diff --git a/package.json b/package.json index 9433699..db29e01 100644 --- a/package.json +++ b/package.json @@ -57,8 +57,9 @@ "homepage": "https://github.com/Enigmatis/graphql-logger#readme", "dependencies": { "@enigmatis/polaris-common": "^1.0.12", - "@enigmatis/polaris-logs": "^2.7.1", - "clean-deep": "^3.3.0" + "@enigmatis/polaris-logs": "^2.8.1", + "clean-deep": "^3.3.0", + "winston": "^3.2.1" }, "devDependencies": { "@commitlint/cli": "^8.3.5", @@ -66,7 +67,7 @@ "@semantic-release/changelog": "^3.0.6", "@semantic-release/git": "latest", "@types/jest": "^24.9.1", - "@types/node": "^12.12.27", + "@types/node": "^12.12.28", "husky": "^3.1.0", "jest": "24.1.0", "prettier": "^1.19.1", diff --git a/src/logger/graphql-log-properties.ts b/src/logger/graphql-log-properties.ts index efefba1..c3531c6 100644 --- a/src/logger/graphql-log-properties.ts +++ b/src/logger/graphql-log-properties.ts @@ -1,5 +1,3 @@ import { PolarisLogProperties } from '@enigmatis/polaris-logs'; -export interface GraphQLLogProperties extends PolarisLogProperties { - operationName?: string; -} +export type GraphQLLogProperties = Omit; diff --git a/src/logger/polaris-graphql-logger.ts b/src/logger/polaris-graphql-logger.ts index 4080a5a..4f1994b 100644 --- a/src/logger/polaris-graphql-logger.ts +++ b/src/logger/polaris-graphql-logger.ts @@ -1,23 +1,80 @@ -import { LoggerConfiguration, PolarisLogger, PolarisLogProperties } from '@enigmatis/polaris-logs'; +import { + AbstractPolarisLogger, + LoggerConfiguration, + PolarisLogProperties, +} from '@enigmatis/polaris-logs'; import { ApplicationProperties, PolarisGraphQLContext } from '@enigmatis/polaris-common'; import { GraphQLLogProperties } from './graphql-log-properties'; -export class PolarisGraphQLLogger extends PolarisLogger { - constructor(loggerConfig: LoggerConfiguration, applicationProperties?: ApplicationProperties) { - super(loggerConfig, applicationProperties); +export class PolarisGraphQLLogger extends AbstractPolarisLogger { + public constructor( + loggerConfiguration: LoggerConfiguration, + applicationLogProperties?: ApplicationProperties, + ) { + super(loggerConfiguration, applicationLogProperties); + } + public fatal( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.fatal(this.buildGraphQLLog(message, context, graphQLLogProperties)); + } + + public error( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.error(this.buildGraphQLLog(message, context, graphQLLogProperties)); + } + + public warn( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.warn(this.buildGraphQLLog(message, context, graphQLLogProperties)); } - private static buildLog( + public info( + message: string, context: PolarisGraphQLContext, - polarisLogProperties?: PolarisLogProperties, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.info(this.buildGraphQLLog(message, context, graphQLLogProperties)); + } + + public debug( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.debug(this.buildGraphQLLog(message, context, graphQLLogProperties)); + } + + public trace( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, + ) { + this.logger.trace(this.buildGraphQLLog(message, context, graphQLLogProperties)); + } + + private buildGraphQLLog( + message: string, + context: PolarisGraphQLContext, + graphQLLogProperties?: GraphQLLogProperties, ): GraphQLLogProperties { - const contextProperties: GraphQLLogProperties | undefined = { + const basicLogProperties = this.buildLog(message, graphQLLogProperties); + + const contextLogProperties = { messageId: context?.requestHeaders?.requestId, - eventKind: polarisLogProperties?.eventKind, + eventKind: graphQLLogProperties?.eventKind, reality: { id: context?.requestHeaders?.realityId, - type: polarisLogProperties?.reality?.type, - name: polarisLogProperties?.reality?.name, + type: graphQLLogProperties?.reality?.type, + name: graphQLLogProperties?.reality?.name, }, eventKindDescription: { requestingSystemId: context?.requestHeaders?.requestingSystemId, @@ -34,52 +91,11 @@ export class PolarisGraphQLLogger extends PolarisLogger { operationName: context?.request?.operationName, variables: context?.request?.polarisVariables, }, - requestingHost: polarisLogProperties?.request?.requestingHost, + requestingHost: graphQLLogProperties?.request?.requestingHost, }, response: context?.response, }; - return { ...contextProperties, ...polarisLogProperties }; - } - - warn(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.warn( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); - } - - info(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.info( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); - } - - error(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.error( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); - } - - trace(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.trace( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); - } - - debug(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.debug( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); - } - fatal(message: string, context: any, graphqlLogProperties?: GraphQLLogProperties): void { - super.fatal( - message, - PolarisGraphQLLogger.buildLog(context as PolarisGraphQLContext, graphqlLogProperties), - ); + return { ...basicLogProperties, ...contextLogProperties }; } } diff --git a/test/polaris-graphql-logger.test.ts b/test/polaris-graphql-logger.test.ts index 2850293..6b04023 100644 --- a/test/polaris-graphql-logger.test.ts +++ b/test/polaris-graphql-logger.test.ts @@ -25,12 +25,12 @@ const loggerImplMock: any = { trace: jest.fn(), } as any; -const polarisGQLLogger: any = new PolarisGraphQLLogger(config, {}); -Object.assign(polarisGQLLogger.logger, loggerImplMock); +const polarisGQLLogger: PolarisGraphQLLogger = new PolarisGraphQLLogger(config, {}); +// Object.assign(polarisGQLLogger.logger, loggerImplMock); describe('build log properties tests', () => { test('info, context empty and log properties exist, only log properties returned', () => { - polarisGQLLogger.info('context is empty', undefined, { + polarisGQLLogger.info('context is empty', {} as any, { reality: { id: 0, type: 'operational' }, }); expect(loggerImplMock.info).toBeCalledWith({ diff --git a/type-declarations/winston-custom-levels.ts b/type-declarations/winston-custom-levels.ts new file mode 100644 index 0000000..60d061d --- /dev/null +++ b/type-declarations/winston-custom-levels.ts @@ -0,0 +1,8 @@ +import * as winston from 'winston'; + +declare module 'winston' { + export interface Logger { + trace: winston.LeveledLogMethod; + fatal: winston.LeveledLogMethod; + } +} From c3900f12258cb6d36f086d7c36441c430145ad0d Mon Sep 17 00:00:00 2001 From: DoctorVoid Date: Sun, 23 Feb 2020 17:16:53 +0200 Subject: [PATCH 3/3] fix: reality is now taken from context --- package-lock.json | 12 +++++------ package.json | 4 ++-- src/logger/graphql-log-properties.ts | 5 ++++- src/logger/polaris-graphql-logger.ts | 17 +++++++--------- test/context-util.ts | 7 ++++++- test/polaris-graphql-logger.test.ts | 30 ++++++++++++---------------- 6 files changed, 38 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index b814dde..db85272 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1093,9 +1093,9 @@ } }, "@enigmatis/polaris-common": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@enigmatis/polaris-common/-/polaris-common-1.0.12.tgz", - "integrity": "sha512-a9l5j/cob5RejDfukMLrNXIz9H0tmlAB+Im+SPSpbsfeKK9di1lfdny8xqJhqnRqBMfXyCnpKLr39sgo691aZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@enigmatis/polaris-common/-/polaris-common-1.1.0.tgz", + "integrity": "sha512-ig4xMCnmpWoz3VoJFbRNFcrlctU9BQZDgNHRilWZMQ7F6WuFEwue2GgleEby8FlS+OO62Ntp7sN0UPhCkCak5Q==", "requires": { "apollo-server-errors": "^2.3.4", "graphql": "^14.6.0" @@ -8914,9 +8914,9 @@ "dev": true }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz", + "integrity": "sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index db29e01..68e1515 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "homepage": "https://github.com/Enigmatis/graphql-logger#readme", "dependencies": { - "@enigmatis/polaris-common": "^1.0.12", + "@enigmatis/polaris-common": "^1.1.0", "@enigmatis/polaris-logs": "^2.8.1", "clean-deep": "^3.3.0", "winston": "^3.2.1" @@ -79,7 +79,7 @@ "tslint-consistent-codestyle": "^1.16.0", "tslint-eslint-rules": "^5.4.0", "tslint-plugin-prettier": "^2.1.0", - "typescript": "^3.7.5" + "typescript": "^3.8.2" }, "husky": { "hooks": { diff --git a/src/logger/graphql-log-properties.ts b/src/logger/graphql-log-properties.ts index c3531c6..e216d70 100644 --- a/src/logger/graphql-log-properties.ts +++ b/src/logger/graphql-log-properties.ts @@ -1,3 +1,6 @@ import { PolarisLogProperties } from '@enigmatis/polaris-logs'; -export type GraphQLLogProperties = Omit; +export type GraphQLLogProperties = Omit< + PolarisLogProperties, + 'response' | 'upn' | 'ip' | 'host' | 'reality' +>; diff --git a/src/logger/polaris-graphql-logger.ts b/src/logger/polaris-graphql-logger.ts index 4f1994b..2ce538f 100644 --- a/src/logger/polaris-graphql-logger.ts +++ b/src/logger/polaris-graphql-logger.ts @@ -1,8 +1,4 @@ -import { - AbstractPolarisLogger, - LoggerConfiguration, - PolarisLogProperties, -} from '@enigmatis/polaris-logs'; +import { AbstractPolarisLogger, LoggerConfiguration } from '@enigmatis/polaris-logs'; import { ApplicationProperties, PolarisGraphQLContext } from '@enigmatis/polaris-common'; import { GraphQLLogProperties } from './graphql-log-properties'; @@ -66,17 +62,18 @@ export class PolarisGraphQLLogger extends AbstractPolarisLogger { context: PolarisGraphQLContext, graphQLLogProperties?: GraphQLLogProperties, ): GraphQLLogProperties { - const basicLogProperties = this.buildLog(message, graphQLLogProperties); + const basicLogProperties: any = this.buildLog(message, graphQLLogProperties); const contextLogProperties = { messageId: context?.requestHeaders?.requestId, eventKind: graphQLLogProperties?.eventKind, reality: { - id: context?.requestHeaders?.realityId, - type: graphQLLogProperties?.reality?.type, - name: graphQLLogProperties?.reality?.name, + id: context?.reality?.id, + type: context?.reality?.type, + name: context?.reality?.name, }, eventKindDescription: { + systemId: basicLogProperties?.eventKindDescription?.systemId, requestingSystemId: context?.requestHeaders?.requestingSystemId, }, request: { @@ -89,7 +86,7 @@ export class PolarisGraphQLLogger extends AbstractPolarisLogger { requestQuery: { query: context?.request?.query, operationName: context?.request?.operationName, - variables: context?.request?.polarisVariables, + variables: context?.request?.variables, }, requestingHost: graphQLLogProperties?.request?.requestingHost, }, diff --git a/test/context-util.ts b/test/context-util.ts index cc7a71c..3970dc8 100644 --- a/test/context-util.ts +++ b/test/context-util.ts @@ -1,6 +1,8 @@ import { PolarisGraphQLContext, PolarisRequestHeaders } from '@enigmatis/polaris-common'; export const query = 'foo'; export const operationName = 'foo'; +export const variables = new Map(); +variables.set('hello', 'world'); export const response = jest.fn(); export const getContextWithRequestHeaders = ( requestHeaders: PolarisRequestHeaders, @@ -8,10 +10,13 @@ export const getContextWithRequestHeaders = ( ): PolarisGraphQLContext => { return { requestHeaders, - request: { query, operationName }, + request: { query, operationName, variables }, response, returnedExtensions: { globalDataVersion: 0 }, responseHeaders: {}, clientIp: requestingIp, + reality: { + id: 0, + }, }; }; diff --git a/test/polaris-graphql-logger.test.ts b/test/polaris-graphql-logger.test.ts index 6b04023..cb2cdee 100644 --- a/test/polaris-graphql-logger.test.ts +++ b/test/polaris-graphql-logger.test.ts @@ -4,7 +4,13 @@ import { LoggerConfiguration, PolarisLogProperties, } from '@enigmatis/polaris-logs'; -import { getContextWithRequestHeaders, operationName, query, response } from './context-util'; +import { + getContextWithRequestHeaders, + operationName, + query, + response, + variables, +} from './context-util'; const messageId = '0'; const upn = 'upn'; @@ -25,21 +31,10 @@ const loggerImplMock: any = { trace: jest.fn(), } as any; -const polarisGQLLogger: PolarisGraphQLLogger = new PolarisGraphQLLogger(config, {}); -// Object.assign(polarisGQLLogger.logger, loggerImplMock); +const polarisGQLLogger: any = new PolarisGraphQLLogger(config); +Object.assign(polarisGQLLogger.logger, loggerImplMock); describe('build log properties tests', () => { - test('info, context empty and log properties exist, only log properties returned', () => { - polarisGQLLogger.info('context is empty', {} as any, { - reality: { id: 0, type: 'operational' }, - }); - expect(loggerImplMock.info).toBeCalledWith({ - message: 'context is empty', - messageId: expect.anything(), - reality: { id: 0, type: 'operational' }, - }); - }); - test('info, context exist and log properties does not, only context returned', () => { const context = getContextWithRequestHeaders( { @@ -62,6 +57,7 @@ describe('build log properties tests', () => { requestQuery: { query, operationName, + variables, }, requestingUserIdentifier: upn, requestingIp, @@ -93,7 +89,7 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId }, reality: { id: realityId }, request: { - requestQuery: { query, operationName }, + requestQuery: { query, operationName, variables }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, @@ -124,7 +120,7 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId }, reality: { id: realityId }, request: { - requestQuery: { query, operationName }, + requestQuery: { query, operationName, variables }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName }, @@ -165,7 +161,7 @@ describe('build log properties tests', () => { eventKindDescription: { requestingSystemId, systemId: appProps.id }, reality: { id: realityId }, request: { - requestQuery: { query, operationName }, + requestQuery: { query, operationName, variables }, requestingUserIdentifier: upn, requestingIp, requestingSystem: { id: requestingSystemId, name: requestingSystemName },