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