change: log messages in ExpressHttpServer

This commit is contained in:
Ruben Taelman 2020-09-22 11:31:43 +02:00 committed by Ruben Taelman
parent aaa49219dc
commit 6212c15352
2 changed files with 8 additions and 1 deletions

View File

@ -2,9 +2,12 @@ import type { Server } from 'http';
import cors from 'cors'; import cors from 'cors';
import type { Express } from 'express'; import type { Express } from 'express';
import express from 'express'; import express from 'express';
import { getLoggerFor } from '../logging/LogUtil';
import type { HttpHandler } from './HttpHandler'; import type { HttpHandler } from './HttpHandler';
export class ExpressHttpServer { export class ExpressHttpServer {
protected readonly logger = getLoggerFor(this);
private readonly handler: HttpHandler; private readonly handler: HttpHandler;
public constructor(handler: HttpHandler) { public constructor(handler: HttpHandler) {
@ -35,10 +38,11 @@ export class ExpressHttpServer {
// Delegate to the main handler // Delegate to the main handler
app.use(async(request, response, done): Promise<void> => { app.use(async(request, response, done): Promise<void> => {
try { try {
this.logger.log('info', `Received request for ${request.url}`);
await this.handler.handleSafe({ request, response }); await this.handler.handleSafe({ request, response });
} catch (error: unknown) { } catch (error: unknown) {
const errMsg = error instanceof Error ? `${error.name}: ${error.message}\n${error.stack}` : 'Unknown error.'; const errMsg = error instanceof Error ? `${error.name}: ${error.message}\n${error.stack}` : 'Unknown error.';
process.stderr.write(errMsg); this.logger.log('error', errMsg);
response.status(500).contentType('text/plain').send(errMsg); response.status(500).contentType('text/plain').send(errMsg);
} finally { } finally {
done(); done();

View File

@ -1,5 +1,7 @@
import type { Server } from 'http'; import type { Server } from 'http';
import request from 'supertest'; import request from 'supertest';
import { LazyLoggerFactory } from '../../../src/logging/LazyLoggerFactory';
import { VoidLoggerFactory } from '../../../src/logging/VoidLoggerFactory';
import { ExpressHttpServer } from '../../../src/server/ExpressHttpServer'; import { ExpressHttpServer } from '../../../src/server/ExpressHttpServer';
import { HttpHandler } from '../../../src/server/HttpHandler'; import { HttpHandler } from '../../../src/server/HttpHandler';
import type { HttpRequest } from '../../../src/server/HttpRequest'; import type { HttpRequest } from '../../../src/server/HttpRequest';
@ -31,6 +33,7 @@ describe('ExpressHttpServer', (): void => {
beforeAll(async(): Promise<void> => { beforeAll(async(): Promise<void> => {
// Prevent test from writing to stderr // Prevent test from writing to stderr
mock = jest.spyOn(process.stderr, 'write').mockImplementation((): boolean => true); mock = jest.spyOn(process.stderr, 'write').mockImplementation((): boolean => true);
LazyLoggerFactory.getInstance().setLoggerFactory(new VoidLoggerFactory());
}); });
beforeEach(async(): Promise<void> => { beforeEach(async(): Promise<void> => {