Sentry.io使用express和typescript捕获状态400

Sentry.io使用express和typescript捕获状态400,typescript,express,sentry,Typescript,Express,Sentry,我正在为一个项目的几个存储库配置Sentry.io,但偶然发现我没有收到状态400或404的任何问题日志,只有500或更高。我知道我需要手动配置它,我确实这样做了,但问题仍然存在。我也试图研究它,但没有找到很多链接 我正在使用打字脚本。我的server.ts文件如下所示: import 'reflect-metadata'; import * as express from 'express'; import * as Sentry from '@sentry/node'; import * a

我正在为一个项目的几个存储库配置Sentry.io,但偶然发现我没有收到状态400或404的任何问题日志,只有500或更高。我知道我需要手动配置它,我确实这样做了,但问题仍然存在。我也试图研究它,但没有找到很多链接

我正在使用打字脚本。我的server.ts文件如下所示:

import 'reflect-metadata';
import * as express from 'express';
import * as Sentry from '@sentry/node';
import * as Tracing from '@sentry/tracing';
import routers from './routes';
import { initializeDB } from './db';
import * as cors from 'cors';
import * as morgan from 'morgan';

const app = express();
const PORT = process.env.APP_PORT || 5000;
const DSN = process.env.APP_DSN

Sentry.init({
  dsn: `${DSN}`,
  integrations: [
    new Sentry.Integrations.Http({ tracing: true }),
    new Tracing.Integrations.Express({ app }),
    new Tracing.Integrations.Mysql(),
  ],

  tracesSampleRate: 1.0,
});

app.use(Sentry.Handlers.requestHandler() as express.RequestHandler);
app.use(Sentry.Handlers.tracingHandler());

initializeDB();

app.use(express.json());
app.use(morgan('combined'));
app.use(cors());
app.use(routers);
// The error handler must be before any other error middleware and after all controllers
app.use(Sentry.Handlers.errorHandler({
  shouldHandleError(error) {
    // Capture all 404 and 500 errors
    if (error.status === 404 || error.status === 500) {
      return true;
    }
    return false;
  },
}) as express.ErrorRequestHandler);

app.listen(PORT, () => {
    console.log(`Listening on port ${PORT}`);
});
我也使用docker,我和我的morgan日志出现在那里。docker-compose.yml文件如下所示:

version: "3.5"
services:
  db:
    image: mariadb:10.5.8
    environment: 
      MYSQL_ROOT_PASSWORD: eccoar_db_pass
      MYSQL_DATABASE: eccoar_complaint_db
    ports:
      - 3307:3306
    volumes:
      - mariadb_data_complaint:/var/lib/mysql
    networks: 
      - back_complaints

  backend_complaint:
    build: .
    depends_on:
      - db
    volumes:
      - ./src:/app/src
      - ./package.json:/app/package.json
    ports:
      - 5001:5000
    environment:
      APP_PORT: 5000
      TYPEORM_CONNECTION: mysql
      TYPEORM_HOST: db
      TYPEORM_DATABASE: eccoar_complaint_db
      TYPEORM_SYNCHRONIZE: "true"
      TYPEORM_PORT: 3306
      TYPEORM_LOGGING: "error"
      TYPEORM_ENTITIES: src/entity/**/*.ts
      TYPEORM_MIGRATIONS: src/migration/**/*.ts
      TYPEORM_SUBSCRIBERS: src/subscriber/**/*.ts
      TYPEORM_ENTITIES_DIR: src/entity
      TYPEORM_MIGRATIONS_DIR: src/migration
      TYPEORM_SUBSCRIBERS_DIR: src/subscriber
    networks: 
      - back_complaints
      - gateway
    
  unit_test:
    build: .
    command: ["npm", "run", "test"]
    volumes:
      - ./src:/app/src
      - ./package.json:/app/package.json
    environment:
      APP_PORT: 5000

volumes:
  mariadb_data_complaint:
    driver: local

networks:
  back_complaints:
    name: back_complaints
  gateway:
    name: gateway
我是否缺少任何配置?有没有一种方法可以正确捕获这些400或404状态