Boa tarde!
Nosso cliente roda o sistema atravez de um executável, de forma que o console não aparece para ele.
Entretando, o sistema ainda está em desenvolvimento e acabam acontecendo alguns erros lá que não acontecem aqui.
Por isso, gostaria de saber se há alguma forma (parâmetro na JVM, sei lá…) de gerar um arquivo de log do output do JVM para poder identificar as excessões mais facilmente.
Algumas dicas:
- Veja a API de log do próprio Java, ou pesquise sobre a Log4J;
- Você pode usar o comando System.setOut() para redirecionar o Out para um arquivo;
- Informe-se sobre o método Thread.setDefaultUncaughtExceptionHandler(). Ele é que é chamado quando uma RuntimeException não é capturado por nenhuma thread;
- Existem comandos da VM para gerar automaticamente um dump da memória sempre que há um outofmemoryerror. Esse dump pode ser aberto no Visual VM ou no profiler do netbeans, e te mostrará que objetos estavam alocados na memória antes do problema ocorrer.
Vocês devem estar usando algum framework e muito provavelmente este framework fornece alguma ferramenta para logging. De qualquer forma o Java em si fornece a classe Logger do pacote java.util.logging.Logger ou vocês ainda podem implementar uma classe para fazer este logging, pegar algum utilitário para tal fim como o Log4j ou ainda podem usar as asserções nativas do Java em determinadas condições enquanto programam.
Asserções não geram log. Elas desaparecem em código de produção.
Mas são úteis para testar condições de debug.
Orientação a Aspectos é muito útil pra isso, combinado com o Log4j por exemplo! =)
Você usa? Nunca vi alguém usar aspectos num exemplo da vida real. Só nesses How Tos da vida.
não uso pq não tenho prática e só estudo um pouca POA… mas dá pra perceber que fica legal pra esse tipo de coisa pq facilita
m 2010 pretendo acompanhar melhor aspectos e implementar na real!
vlw!