@english-learning/logger
v0.1.5
Published
Shared logger and HTTP request/response middleware for English Learning platform services
Readme
@english-learning/logger
Shared logger and HTTP request/response logging middleware for the English Learning platform (NestJS services).
Features
- Winston-based
AppLoggerwith console + daily rotate file output (JSON), configurable via env. - Request/response middleware with trace ID (UUID v4) propagation and status-based log levels.
- Body logging with redaction for sensitive keys (password/token/cookies) and optional size cap.
- Trace ID header
x-trace-idadded to responses and forwarded through the gateway.
Usage (Nest bootstrap)
import { AppLogger, createRequestLoggerMiddleware } from '@english-learning/logger';
async function bootstrap() {
const appLogger = new AppLogger();
const app = await NestFactory.create(AppModule, { logger: appLogger });
app.useLogger(appLogger);
app.use(
createRequestLoggerMiddleware({
logger: appLogger,
bodyMax: Number(process.env.LOGGER_BODY_MAX ?? '0'),
}),
);
}Config (env)
LOGGER_LEVEL(defaultinfo)LOGGER_DIR(defaultlogs)LOGGER_FILENAME(defaultapp-%DATE%.log)LOGGER_MAX_SIZE(default10m)LOGGER_MAX_FILES(default14d)LOGGER_BODY_MAX(default0unlimited) — truncate logged body when set.LOGGER_REDACT_KEYS(comma list, default: password, token, access_token, refresh_token, cookie, cookies)
Body redaction: password/token/cookie fields are logged as [redacted len=NN preview=abc...xyz] (first 3 + last 3 chars, plus size). Binary buffers log as [buffer len=N].
Publish
- Build:
pnpm installthenpnpm --dir packages/logger build - (Optional) Pack:
pnpm --dir packages/logger pack - Publish to npm (public):
npm publish - Verify:
npm view @english-learning/logger version
Install from npm
pnpm add @english-learning/loggerNotes
- Trace ID header:
x-trace-idis generated if absent and forwarded downstream. - Middleware logs request/response bodies; set
LOGGER_BODY_MAXto cap size if payloads are large. - Validation errors remain 422; middleware logs once per request with the corresponding trace ID.
