обновлено логирование

This commit is contained in:
Первов Артем
2026-07-03 19:33:28 +03:00
parent 5260b8a9c5
commit c702946393
3 changed files with 40 additions and 2 deletions

View File

@@ -5,5 +5,8 @@ DATABASE_URL=postgres://greact:pG3526l4@194.36.208.86:5433/cloud
# Optional. When set, POST /api/ingest requires x-api-key: <value>.
INGEST_API_KEY=
# Optional. Logs POST /api/ingest request metadata without x-api-key.
INGEST_DEBUG_LOG=
# Poll interval for GET /api/current/events SSE snapshots.
CURRENT_EVENTS_POLL_MS=1000

View File

@@ -5,6 +5,7 @@ services:
restart: unless-stopped
environment:
NODE_ENV: production
BRANCH: ${branch:-}
PORT: ${PORT}
DATABASE_URL: ${DATABASE_URL}
INGEST_API_KEY: ${INGEST_API_KEY}

View File

@@ -1,10 +1,30 @@
import { ValidationPipe } from '@nestjs/common';
import { Logger, ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import compression from 'compression';
import { AppModule } from './app.module';
import { DbService } from './db/db.service';
type CurrentDatabaseRow = {
database: string;
};
function getMaskedDatabaseUrl(): string | undefined {
const databaseUrl = process.env.DATABASE_URL;
if (!databaseUrl) {
return undefined;
}
try {
const url = new URL(databaseUrl);
const username = url.username ? `${url.username}:***@` : '';
return `${url.protocol}//${username}${url.host}${url.pathname}`;
} catch {
return databaseUrl.replace(/:\/\/([^:]+):([^@]+)@/, '://$1:***@');
}
}
/** Запускает HTTP API со сжатием и глобальной валидацией DTO. */
async function bootstrap() {
const logger = new Logger('Bootstrap');
const app = await NestFactory.create(AppModule);
app.use(compression());
app.setGlobalPrefix('api');
@@ -18,6 +38,20 @@ async function bootstrap() {
);
await app.listen(process.env.PORT as string);
const db = app.get(DbService);
const currentDatabase = await db.query<CurrentDatabaseRow>(
'SELECT current_database() AS database',
);
logger.log({
event: 'cloud.started',
port: process.env.PORT,
branch: process.env.BRANCH ?? process.env.branch ?? '',
database: currentDatabase.rows[0]?.database,
databaseUrl: getMaskedDatabaseUrl(),
ingestDebugLog: process.env.INGEST_DEBUG_LOG ?? '',
});
}
void bootstrap();