Отредактировать заголовки запросов от логирования pino - PullRequest
0 голосов
/ 03 октября 2019

Я использую koa-pino-logger и по умолчанию получаю полную информацию о запросе, когда запрос завершен:

req: {
  "id": 1,
  "method": "POST",
  "url": "/v1/applications/c2cc6b32-1533-4c4c-b8b6-b581855839bb/applicants",
  "headers": {
    "content-type": "application/json",
    "authorization": "Bearer eyJ0eXAiOiJK...",
    "user-agent": "PostmanRuntime/7.17.1",
    "accept": "*/*",
    "cache-control": "no-cache",
    "postman-token": "ac990b73-0eb7-4ab1-9767-6e36e96fd101",
    "host": "localhost:8080",
    "accept-encoding": "gzip, deflate",
    "content-length": "406",
    "connection": "keep-alive"
  },
  "remoteAddress": "::ffff:172.18.0.1",
  "remotePort": 54348
}
res: {
  "statusCode": 201,
  "headers": {
    "x-dns-prefetch-control": "off",
    "x-frame-options": "SAMEORIGIN",
    "strict-transport-security": "max-age=15552000; includeSubDomains",
    "x-download-options": "noopen",
    "x-content-type-options": "nosniff",
    "x-xss-protection": "1; mode=block",
    "content-type": "application/json; charset=utf-8",
    "content-length": "68"
  }
}
responseTime: 1185

Я пытался использовать редактирование (https://github.com/pinojs/pino/blob/master/docs/redaction.md) для удаленияreq.headers


import logger = require('koa-pino-logger');

const app: any = new Koa()
  .use(logger({
    redact: ['req.headers','req.headers.authorization'] // This is not working >:()
  }))
  .use(helmet())
  .use(bodyParser())
  .use(coreErrorsMiddleware)
  .use(
    oas({
      file: `${__dirname}/docs/openapi.yaml`,
      uiEndpoint: '/swagger',
      endpoint: '/openapi.json',
      errorHandler,
      validateResponse: false,
      enableUi: isDevelopmentEnvironment,
    })
  )
  .use(reload(() => import('./routes')));

Это никак не влияет, хотя и имеет значение serializers, но если я пытаюсь изменить журнал запросов и вернуть его, я получаю ошибку проверки схемы:


  .use(logger({
    serializers: {
      ["req"]: (val) => {
        // retracting req logging
        val.headers = 'redacted';
        return val
      },
    },
  }))

приводит к

RequestValidationError: Schema validation error

Итак, с чем я сейчас работаю, полностью редактирует req, ничего не возвращая:

  .use(logger({
    serializers: {
      ["req"]: (val) => {
        // retracting req logging
      },
    },
  }))

что приводит к:

enter image description here

Я неправильно использую редактирование? Есть ли другие регистраторы, которые я могу использовать для достижения того, что мне нужно?

1 Ответ

0 голосов
/ 30 октября 2019

Я бы проверил версию pino, которую вы установили. redact, как функция pino, входит с v5.0.0. Если у вас pino версия <<code>v5.*, вам нужно использовать pino-noir.

...