From befa965a44ec71aa910905bd54caf947d478573b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 4 May 2022 13:58:45 +0200 Subject: [PATCH] configure logger only once. Log Context User ID if present on response --- backend/src/apis/HttpRequest.ts | 4 +-- backend/src/graphql/resolver/UserResolver.ts | 30 +++++++++++--------- backend/src/server/createServer.ts | 6 +--- backend/src/server/logger.ts | 6 ++++ backend/src/server/plugins.ts | 1 + 5 files changed, 26 insertions(+), 21 deletions(-) create mode 100644 backend/src/server/logger.ts diff --git a/backend/src/apis/HttpRequest.ts b/backend/src/apis/HttpRequest.ts index 75b7ea66a..ea25da5ca 100644 --- a/backend/src/apis/HttpRequest.ts +++ b/backend/src/apis/HttpRequest.ts @@ -1,8 +1,6 @@ import axios from 'axios' -import log4js from 'log4js' -import CONFIG from '@/config' +import log4js from '@/server/logger' -log4js.configure(CONFIG.LOG4JS_CONFIG) const logger = log4js.getLogger('http') // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index f8c3770ae..96a39caf7 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -1,6 +1,5 @@ import fs from 'fs' -// import log4js from 'log4js' - +import log4js from '@/server/logger' import { Context, getUser } from '@/server/context' import { Resolver, Query, Args, Arg, Authorized, Ctx, UseMiddleware, Mutation } from 'type-graphql' @@ -24,14 +23,11 @@ import { klicktippSignIn } from '@/apis/KlicktippController' import { RIGHTS } from '@/auth/RIGHTS' import { hasElopageBuys } from '@/util/hasElopageBuys' - // eslint-disable-next-line @typescript-eslint/no-var-requires const sodium = require('sodium-native') // eslint-disable-next-line @typescript-eslint/no-var-requires const random = require('random-bigint') -const log4js = require("log4js"); -log4js.configure(CONFIG.LOG4JS_CONFIG) const logger = log4js.getLogger('graphql.UserResolver') // We will reuse this for changePassword @@ -269,7 +265,7 @@ export class UserResolver { const user = new User(dbUser) logger.debug('user=' + user) - + // Elopage Status & Stored PublisherId user.hasElopage = await this.hasElopage({ ...context, user: dbUser }) logger.info('user.hasElopage=' + user.hasElopage) @@ -315,12 +311,20 @@ export class UserResolver { { email, firstName, lastName, language, publisherId, redeemCode = null }: CreateUserArgs, ): Promise { const logger = log4js.getLogger('graphql.resolver.UserResolver') - logger.trace('createUser(email=' + email + - ', firstName=' + firstName + - ', lastName=' + lastName + - ', language=' + language + - ', publisherId=' + publisherId + - ', redeemCode =' + redeemCode) + logger.trace( + 'createUser(email=' + + email + + ', firstName=' + + firstName + + ', lastName=' + + lastName + + ', language=' + + language + + ', publisherId=' + + publisherId + + ', redeemCode =' + + redeemCode, + ) // TODO: wrong default value (should be null), how does graphql work here? Is it an required field? // default int publisher_id = 0; @@ -357,7 +361,7 @@ export class UserResolver { logger.info('new dbUser=' + dbUser) if (redeemCode) { const transactionLink = await dbTransactionLink.findOne({ code: redeemCode }) - logger.info('redeemCode found transactionLink='+ transactionLink) + logger.info('redeemCode found transactionLink=' + transactionLink) if (transactionLink) { dbUser.referrerId = transactionLink.userId } diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index deec7e9a9..8d1397f7d 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -1,7 +1,5 @@ import 'reflect-metadata' -import log4js from 'log4js' - import { ApolloServer } from 'apollo-server-express' import express, { Express } from 'express' @@ -24,16 +22,14 @@ import schema from '@/graphql/schema' import { elopageWebhook } from '@/webhook/elopage' import { Connection } from '@dbTools/typeorm' +import log4js from './logger' // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; type ServerDef = { apollo: ApolloServer; app: Express; con: Connection } -log4js.configure(CONFIG.LOG4JS_CONFIG) - // eslint-disable-next-line @typescript-eslint/no-explicit-any const createServer = async (context: any = serverContext): Promise => { - const logger = log4js.getLogger('server.createServer') logger.debug('This little thing went to market') logger.info('This little thing stayed at home') diff --git a/backend/src/server/logger.ts b/backend/src/server/logger.ts new file mode 100644 index 000000000..057c55307 --- /dev/null +++ b/backend/src/server/logger.ts @@ -0,0 +1,6 @@ +import log4js from 'log4js' +import CONFIG from '@/config' + +log4js.configure(CONFIG.LOG4JS_CONFIG) + +export default log4js diff --git a/backend/src/server/plugins.ts b/backend/src/server/plugins.ts index f3d289391..f3067d44a 100644 --- a/backend/src/server/plugins.ts +++ b/backend/src/server/plugins.ts @@ -36,6 +36,7 @@ const logPlugin = { ${mutation || query}variables: ${JSON.stringify(filterVariables(variables), null, 2)}`) return { willSendResponse(requestContext: any) { + if (requestContext.context.user) logger.trace(`User ID: ${requestContext.context.user.id}`) if (requestContext.response.data) logger.trace(`Response-Data: ${JSON.stringify(requestContext.response.data, null, 2)}`)