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);
...