Exceptions e Log4J

Pessoal,

Ao criar minhas exceptions para um sistema, seria uma boa eu colocar o Log4J já dentro destas exceptions? Ou seja, a partir do momento em que ocorrer uma exceção, esta já será gravada de acordo com a configuração do Log4J e não precisarei ficar colocando logger.xxx no meu código! Além de deixar as mensagens padronizadas. O que vcs acham? Veem algum problema com isto?

Exemplo abaixo contém somente a idéia!

Ao invés de eu fazer isso:

...
} catch (SQLException e) {
    String msgErro = "Erro ao executar a query do método XXX!";
    logger.fatal(msgErro);
    throw new MinhaSQLException(msgErro, e);
}

Farei isto:

...
} catch (SQLException e) {
    throw new MinhaSQLException("XXX!", e);
}

A mensagem completa estará dentro da própria MinhaSQLException, deixando assim as mensagens padronizadas, como dito acima.

ASOBrasil

hmmmm, eu gosto dessa abordagem - desde que vc crie uma hierarquia decente de exceção (não adianta criar uma única exceção - genérica e usá-la por todo seu código). Isso irá reduzir seu código em apenas uma linha - a linha de chamada do log.

É sempre bom ver se vc pode subclassificar suas exceções (a mensagem pode não ser suficiente) - Isso porque vc não terá mais a linha/classe exata em que o log foi disparado, agora essa linha/classe apontará pra sua exception …

Se amanhã ou depois vc decidir por desligar o log basta alterar o log4j.properties para uma exceção específica (isso que é lesgal!)

Óbviamente estamos falando apenas de exceções - suas outras chamadas de log continuarão onde estão (pra manter as informações da classe/linha loggada).

Bom o que fazemos aqui em nossa empresa
usamos orientacao ASPECT ou seja assim que acontecer a exception ele ira chamar o método que automaticamente ira colocar a exception nos properties
mas estou com problemas para colocar as exceptions no codigo
assim que conseguir postarei aqui