Daniel, boa tarde!
No Express, respostas 404 não são o resultado de um erro, portanto o middleware manipulador de erros não irá capturá-las. Este comportamento é porque uma resposta 404 simplesmente indicam a ausência de trabalho adicional para fazer; em outras palavras, o Express executou todas as funções de middleware e rotas, e descobriu que nenhuma delas respondeu. Tudo que você precisa fazer é incluir uma função de middleware no final da pilha (abaixo de todas as outras funções) para manipular uma resposta 404
app.use(function(req, res, next) {
//retorna a página de 400
});
Você define middlewares de manipulação de erros da mesma forma que outros middlewares, exceto que com quatro argumentos ao invés de três; especificamente com a assinatura (err, req, res, next):
app.use(function(err, req, res, next) {
console.error(err.stack);
//retorna a página de 500
});
Espero ter ajudado e bons estudos!