@@ -29,6 +29,7 @@ interface WithIdentifiedSession {
29
29
30
30
interface ErrorWithStatus extends Error {
31
31
status ?: number ;
32
+ expected_error ?: boolean ;
32
33
}
33
34
34
35
function getBasicInfo ( req : Request ) : [ string , Record < string , string | number > ] {
@@ -84,11 +85,15 @@ function finishLog<SLocals extends AnyServiceLocals = ServiceLocals<Configuratio
84
85
endLog . u = res . locals . user . id ;
85
86
}
86
87
88
+ let unexpectedError = false ;
87
89
if ( error ) {
88
90
endLog . e = error . message ;
89
91
if ( ! ( error instanceof ServiceError ) || error . log_stack ) {
90
92
endLog . st = error . stack ;
91
93
}
94
+ if ( ! ( error as ErrorWithStatus ) . expected_error ) {
95
+ unexpectedError = true ;
96
+ }
92
97
}
93
98
94
99
if ( prefs . logRequests ) {
@@ -110,7 +115,11 @@ function finishLog<SLocals extends AnyServiceLocals = ServiceLocals<Configuratio
110
115
}
111
116
112
117
const msg = service . getLogFields ?.( req as RequestWithApp < SLocals > , endLog ) || url ;
113
- logger . info ( endLog , msg ) ;
118
+ if ( unexpectedError ) {
119
+ logger . error ( endLog , msg ) ;
120
+ } else {
121
+ logger . info ( endLog , msg ) ;
122
+ }
114
123
}
115
124
116
125
export function loggerMiddleware <
@@ -122,7 +131,7 @@ export function loggerMiddleware<
122
131
) : RequestHandler {
123
132
const nonProd = getNodeEnv ( ) !== 'production' ;
124
133
const { logger, service } = app . locals ;
125
- return function gblogger ( req , res , next ) {
134
+ return function serviceLogger ( req , res , next ) {
126
135
const logResponse =
127
136
config ?. logResponseBody || ( nonProd && req . headers [ 'x-log' ] ?. includes ( 'res' ) ) ;
128
137
const logRequest = config ?. logRequestBody || ( nonProd && req . headers [ 'x-log' ] ?. includes ( 'req' ) ) ;
@@ -176,7 +185,7 @@ export function loggerMiddleware<
176
185
export function errorHandlerMiddleware <
177
186
SLocals extends AnyServiceLocals = ServiceLocals < ConfigurationSchema > ,
178
187
> ( app : ServiceExpress < SLocals > , histogram : Histogram , unnest ?: boolean , returnError ?: boolean ) {
179
- const gbErrorHandler : ErrorRequestHandler = ( error , req , res , next ) => {
188
+ const svcErrorHandler : ErrorRequestHandler = ( error , req , res , next ) => {
180
189
let loggable : Partial < ServiceError > = error ;
181
190
const body = error . response ?. body || error . body ;
182
191
if ( unnest && body ?. domain && body ?. code && body ?. message ) {
@@ -204,17 +213,17 @@ export function errorHandlerMiddleware<
204
213
next ( error ) ;
205
214
}
206
215
} ;
207
- return gbErrorHandler ;
216
+ return svcErrorHandler ;
208
217
}
209
218
210
219
export function notFoundMiddleware ( ) {
211
- const gbNotFoundHandler : ServiceHandler = ( req , res , next ) => {
220
+ const serviceNotFoundHandler : ServiceHandler = ( req , res , next ) => {
212
221
const error = new ServiceError ( req . app , `Cannot ${ req . method } ${ req . path } ` , {
213
222
status : 404 ,
214
223
code : 'NotFound' ,
215
224
domain : 'http' ,
216
225
} ) ;
217
226
next ( error ) ;
218
227
} ;
219
- return gbNotFoundHandler as RequestHandler ;
228
+ return serviceNotFoundHandler as RequestHandler ;
220
229
}
0 commit comments