CodeGym/Cursos Java/Módulo 3/Níveis de evento

Níveis de evento

Disponível

3.1 Lista de níveis de eventos

Logging é o processo de registro de quaisquer eventos que ocorrem durante a execução do programa. Seu dever como programador é record everything importantporque assim, quando productionhouver erros estranhos e/ou graves, você não terá mais nada além desses logs.

Qualquer erro será eliminado muitas vezes mais rápido se você tiver todas as informações sobre ele e sobre todo o histórico das chamadas. Mas uma conclusão simples segue daqui - para registrar tudo em geral: chamadas de todos os métodos, valores de todos os parâmetros.

Isso também não é uma opção - muita informação é tão ruim quanto pouca. Precisamos de registro inteligente. Feito pelo homem para o homem. E aqui chegamos ao primeiro fato sobre o registro - todas as entradas no registro são divididas em categorias, mesmo no momento de sua criação.

Lista de níveis de evento

O programador, ao escrever um evento no log, deve decidir por si mesmo a importância dessa informação. O nível de gravidade do evento é escolhido pelo autor da mensagem. Existem log4j5 níveis de importância das informações registradas:

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

A seguir, falaremos sobre eles com mais detalhes.

3.2 DEBUGAR

O nível DEBUGé considerado o menos importante. As informações gravadas no log com esse nível de importância são necessárias apenas durante a depuração do aplicativo. Para registrar as informações necessárias durante a depuração, o método é usado debug().

Exemplo:

class Manager {
    private static final Logger logger = LoggerFactory.getLogger(Manager.class);

    public boolean processTask(Task task) {
        logger.debug("processTask id = " + task.getId());
        try {
            task.start();
            task.progress();
            task.complete();
            return true;
        } catch (Exception e) {
            logger.error("Unknown error", e);
            return false;
        }
    }
}

Preste atenção, o método debugestá bem no começo do método (o método ainda não teve tempo de fazer nada) e escreve no log o valor da variável passada para o método. Este é o caso de uso mais comum para o método debug().

3.3 INFORMAÇÕES e AVISOS

Os próximos dois níveis são INFOe WARN. Existem dois métodos para eles - info()e warn().

O nível INFOé usado simplesmente para mensagens informativas: isso e aquilo acontece. Quando você começa a analisar um erro no log, pode ser muito útil ler seu histórico. O método é perfeito para isso info().

O nível WARNé usado para escrever avisos (da palavra warning ). Normalmente, com esse nível de importância, é escrita a informação de que algo deu errado, mas o programa sabe o que fazer nessa situação.

Por exemplo, no processo de gravação de um arquivo no disco, descobriu-se que esse arquivo já existe. Aqui o programa pode registrar um aviso (aviso), mas mostrar ao usuário uma caixa de diálogo e oferecer a seleção de um nome de arquivo diferente.

Exemplo:

class FileManager {
    private static final Logger logger = LoggerFactory.getLogger(FileManager.class);

    public boolean saveFile(FileData file) {
        logger.info(“save the file ” + file.getName());
        boolean resultOK = SaveUtils.save(file);
        if (resultOK) return true;

        logger.warn(“file writing problem ” + file.getName());
        String filename = Dialog.selectFile();
        boolean result = SaveUtils.save(file, filename);
        return result;
    }

3.4 ERRO e FATAL

Finalmente, os dois níveis de log mais importantes são ERRORe FATAL. Para eles, também existem métodos especiais com os mesmos nomes: error()e fatal().

Eles também decidiram dividir os erros em duas categorias - erros comuns e erros fatais . Um erro fatal geralmente resulta em uma falha de aplicativo (para aplicativos de desktop) ou uma falha de serviço da web (para aplicativos da web).

Outro bom exemplo é o sistema operacional Windows. Se o seu programa acabou de travar, do ponto de vista do sistema operacional, isso é Error. E se o próprio sistema operacional caiu e você vê a tela azul da morte do Windows, isso já é Fatal error.

Em aplicativos Java, os eventos Errorsão frequentemente Fatalassociados a exceções geradas. Exemplo:

class Manager {
    private static final Logger logger = LoggerFactory.getLogger(Manager.class);

    public boolean processTask(Task task) {
        logger.debug("processTask id = " + task.getId());
        try {
            task.start();
            task.progress();
            task.complete();
            return true;
        } catch (Exception e) {
            logger.error("Unknown error", e);
            return false;
        }
    }
}

3.5 O que registrar

Claro, não vale a pena registrar tudo seguido. Na maioria dos casos, isso piora drasticamente a legibilidade do log e, afinal, o log é gravado em primeiro lugar para ser lido.

Além disso, você não pode gravar várias informações pessoais e financeiras no log. Agora com isso de forma estrita e fácil você pode incorrer em multas ou processos judiciais. Mais cedo ou mais tarde, esse log vazará para o lado e não haverá problemas.

Então, o que deve ser registrado?

Primeiro, você precisa registrar o início do aplicativo . Após o início do aplicativo, é recomendável registrar seu modo de operação e várias configurações importantes - isso facilitará a leitura do registro no futuro.

Em segundo lugar, você precisa registrar o status de todos os serviços de terceiros com os quais seu aplicativo funciona: sistemas de correspondência, quaisquer serviços externos. No mínimo, você precisa garantir o momento de conexão com eles para garantir que funcionem corretamente.

Em terceiro lugar, todas as exceções precisam ser registradas . Se forem esperados, as informações sobre eles podem ser escritas de forma compacta. Informações completas sobre exceções fornecem 50% a 80% das informações importantes ao procurar um bug.

Você também precisa registrar o desligamento do aplicativo . O aplicativo deve encerrar normalmente e não lançar dezenas de erros no log. Freqüentemente, neste local, você pode encontrar tarefas travadas, problemas com o pool de threads ou problemas com a exclusão de arquivos temporários.

Certifique-se de registrar tudo relacionado à segurança e autorização do usuário . Se um usuário tentar fazer login ou redefinir sua senha 10 vezes seguidas, essas informações devem ser refletidas nos logs.

Registre o máximo possível de informações sobre tarefas assíncronas - as exceções geralmente são perdidas nesses encadeamentos. Para uma tarefa assíncrona, certifique-se de registrar seu início e fim. A conclusão bem-sucedida deve ser registrada da mesma forma que uma problemática.

O que mais? Lançamento de tarefas cronometradas, lançamento de tarefas armazenadas SQL-procedures, sincronização de dados, tudo relacionado a transações distribuídas. Acho que é o suficiente para começar. Você adicionará a esta lista no futuro.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário