quantas vezes não fiquei fuçando arquivo de log atrás de um erro, e sempre era algo do tipo : aconteceu lá pelas 10 da manhã, e nem sempre a data do servidor estava … assim como diremos … certa ! ou seja quase sempre o erro é achado quase por milagre
Um dia destes não sei que servidor que estava acessando e rolou um erro no server bizzaro, que explodiu um monte de caracteres na saida http, mas a mensagem era algo do tipo : oh este monte de letras ae em baixo explica o que aconteceu para alguem que saiba ler isto … e era um monte de dados no formato BASE64, não me dei ao trabalho de converter de volta, mas criptografar um stacktrace de um erro, e colocar no formato BASE64 para poder mostrar pareceu uma idéia bem legal.
fiz uma versão reduzida disto, gerando somente um ID para o erro e retornando junto com a mensagem de erro assim na comunicação entre usuário e suporte surge um elemento em comum que é o identificador do erro.
o código Java é extremamente simples, as podia ser mais simples ainda heheheh
public class ErrorID {
private static int counter = 0;
public static synchronized String getErrorID(String string) {
String result = string + " ERROR.ID:" + System.currentTimeMillis() + "-" + counter++;
if (counter >= Integer.MAX_VALUE - 1) {
counter = 0;
}
return result;
}
}
e na hora de usar é algo do tipo :
...
} catch (SQLException e) {
String errorID = ErrorID.getErrorID("error inserting something");
logger.error(errorID, e);
throw new Exception(errorID);
...
