Skip to content

Commit

Permalink
Merge pull request #11 from Enigmatis/log-with-context
Browse files Browse the repository at this point in the history
Added context to the logs
  • Loading branch information
chenshoo authored Feb 24, 2020
2 parents e0b0c2b + c3900f1 commit c4f5391
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 104 deletions.
24 changes: 12 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,18 @@
},
"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-common": "^1.1.0",
"@enigmatis/polaris-logs": "^2.8.1",
"clean-deep": "^3.3.0",
"winston": "^3.2.1"
},
"devDependencies": {
"@commitlint/cli": "^8.3.5",
"@commitlint/config-conventional": "^8.3.4",
"@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",
Expand All @@ -78,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": {
Expand Down
7 changes: 4 additions & 3 deletions src/logger/graphql-log-properties.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { PolarisLogProperties } from '@enigmatis/polaris-logs';

export interface GraphQLLogProperties extends PolarisLogProperties {
operationName?: string;
}
export type GraphQLLogProperties = Omit<
PolarisLogProperties,
'response' | 'upn' | 'ip' | 'host' | 'reality'
>;
113 changes: 74 additions & 39 deletions src/logger/polaris-graphql-logger.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,79 @@
import { LoggerConfiguration, PolarisLogger, 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';

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));
}

public info(
message: string,
context: PolarisGraphQLContext,
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 static buildLogProperties(
context?: PolarisGraphQLContext,
polarisLogProperties: PolarisLogProperties = {},
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 = {
operationName: context?.request?.operationName,
const basicLogProperties: any = 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,
id: context?.reality?.id,
type: context?.reality?.type,
name: context?.reality?.name,
},
eventKindDescription: {
systemId: basicLogProperties?.eventKindDescription?.systemId,
requestingSystemId: context?.requestHeaders?.requestingSystemId,
},
request: {
Expand All @@ -30,34 +83,16 @@ export class PolarisGraphQLLogger extends PolarisLogger {
name: context?.requestHeaders?.requestingSystemName,
id: context?.requestHeaders?.requestingSystemId,
},
requestQuery: context?.request?.query,
requestingHost: polarisLogProperties?.request?.requestingHost,
requestQuery: {
query: context?.request?.query,
operationName: context?.request?.operationName,
variables: context?.request?.variables,
},
requestingHost: graphQLLogProperties?.request?.requestingHost,
},
response: context?.response,
};
return { ...contextProperties, ...polarisLogProperties };
}

warn(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.warn(message, graphqlLogProperties);
}

info(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.info(message, graphqlLogProperties);
}

error(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.error(message, graphqlLogProperties);
}

trace(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.trace(message, graphqlLogProperties);
}

debug(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.debug(message, graphqlLogProperties);
}

fatal(message: string, graphqlLogProperties?: GraphQLLogProperties): void {
super.fatal(message, graphqlLogProperties);
return { ...basicLogProperties, ...contextLogProperties };
}
}
17 changes: 12 additions & 5 deletions test/context-util.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
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 variables = new Map<string, string>();
variables.set('hello', 'world');
export const response = jest.fn();
export const getContextWithRequestHeaders = (
requestHeaders: PolarisRequestHeaders,
requestingIp: string,
) => {
): PolarisGraphQLContext => {
return {
requestHeaders,
request: { query: requestQuery },
response: jest.fn(),
request: { query, operationName, variables },
response,
returnedExtensions: { globalDataVersion: 0 },
responseHeaders: {},
clientIp: requestingIp,
reality: {
id: 0,
},
};
};
Loading

0 comments on commit c4f5391

Please sign in to comment.