Yuki Takei 4 лет назад
Родитель
Сommit
b2d8193f1f
3 измененных файлов с 48 добавлено и 1 удалено
  1. 2 0
      packages/slackbot-proxy/package.json
  2. 28 1
      packages/slackbot-proxy/src/Server.ts
  3. 18 0
      yarn.lock

+ 2 - 0
packages/slackbot-proxy/package.json

@@ -33,6 +33,7 @@
     "cookie-parser": "^1.4.5",
     "cross-env": "^7.0.0",
     "dotenv-flow": "^3.2.0",
+    "express-bunyan-logger": "^1.3.3",
     "helmet": "^4.6.0",
     "method-override": "^3.0.0",
     "mysql2": "^2.2.5",
@@ -48,6 +49,7 @@
     "@typescript-eslint/parser": "^4.18.0",
     "browser-bunyan": "^1.6.3",
     "eslint-import-resolver-typescript": "^2.4.0",
+    "morgan": "^1.10.0",
     "ts-jest": "^26.5.4",
     "ts-node": "^9.1.1",
     "ts-node-dev": "^1.1.6",

+ 28 - 1
packages/slackbot-proxy/src/Server.ts

@@ -9,12 +9,13 @@ import compress from 'compression';
 import cookieParser from 'cookie-parser';
 import methodOverride from 'method-override';
 import helmet from 'helmet';
+import expressBunyanLogger from 'express-bunyan-logger';
 
 import { ConnectionOptions } from 'typeorm';
 
 import swaggerSettingsForDev from '~/config/swagger/config.dev';
 import swaggerSettingsForProd from '~/config/swagger/config.prod';
-
+import loggerFactory from '~/utils/logger';
 
 export const rootDir = __dirname;
 const isProduction = process.env.NODE_ENV === 'production';
@@ -49,6 +50,8 @@ const helmetOptions = isProduction ? {} : {
   acceptMimes: ['application/json'],
   httpPort: process.env.PORT || 8080,
   httpsPort: false, // CHANGE
+  // disable RequestLogger of @tsed/logger
+  logger: { logRequest: false },
   mount: {
     '/': [
       `${rootDir}/controllers/*.ts`,
@@ -108,6 +111,30 @@ export class Server {
       .use(bodyParser.urlencoded({
         extended: true,
       }));
+
+    this.setupLogger();
+  }
+
+
+  /**
+   * Setup logger for requests
+   */
+  private setupLogger(): void {
+    // use bunyan
+    if (isProduction) {
+      const logger = loggerFactory('express');
+
+      this.app.use(expressBunyanLogger({
+        logger,
+        excludes: ['*'],
+      }));
+    }
+    // use morgan
+    else {
+      // eslint-disable-next-line @typescript-eslint/no-var-requires
+      const morgan = require('morgan');
+      this.app.use(morgan('dev'));
+    }
   }
 
 }

+ 18 - 0
yarn.lock

@@ -4368,6 +4368,13 @@ basic-auth@~2.0.0:
   dependencies:
     safe-buffer "5.1.1"
 
+basic-auth@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
+  integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
+  dependencies:
+    safe-buffer "5.1.2"
+
 batch@0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -12564,6 +12571,17 @@ mongoose@5.10.11:
     sift "7.0.1"
     sliced "1.0.1"
 
+morgan@^1.10.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"
+  integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==
+  dependencies:
+    basic-auth "~2.0.1"
+    debug "2.6.9"
+    depd "~2.0.0"
+    on-finished "~2.3.0"
+    on-headers "~1.0.2"
+
 morgan@^1.9.0:
   version "1.9.0"
   resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051"