English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Java

Java Flow Control

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

Tratamento de Exceção Java

Java List

Java Queue (Queue)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

Other Java topics

Logging Java

In this tutorial, we will learn Java logging and its various components through examples.

Java allows us to create and capture log messages and files through the logging process.

No Java, logging requires frameworks and APIs. Java has a built-in logging framework in the java.util.logging package.

We can also use third-party frameworks (such as Log4j, Logback, etc.) are used for logging.

Java log components

The following diagram shows the core components and specific process of the Java Logging API (java.util.logging).

Java logging flowchart

1.Logger

The Logger class provides logging methods. We can instantiate an object from the Logger class and call its methods to log.

Let's take an example.

Logger logger = Logger.getLogger("newLoggerName");

The getLogger() method of the Logger class is used to find or create a new Logger. The string parameter defines the name of the logger.

Here, this will create a new Logger object or return a Logger object with the same name.

By convention, use class.getName() to define a Logger after the current class.

Logger logger = Logger.getLogger(MyClass.class.getName());

Atenção:If the passed name is null, this method will throw a NullPointerException.

Each Logger has a level to determine the importance of log messages. There is7A basic log level:

Log levels (in descending order)Usar
SEVERESerious failure
WARNING

Warning messages, potential issues

INFORoutine runtime information
CONFIGConfiguration information
FINE

Normal developer information (trace messages)

FINER

Detailed developer information (trace messages)

FINEST

Highly detailed developer information (trace messages)

OFF

Disable logging for all levels (do not capture any content)

ALL

Enable logging for all levels (capture all content)

Each log level has an integer value to determine its severity, except for the two special log levels OFF and ALL.

Log message

By default, the first three log levels are always recorded. To set other levels, we can use the following code:

logger.setLevel(Level.LogLevel);
// Exemplo
logger.setLevel(Level.FINE);

In this example, only Level.FINE and above levels are set for logging. Delete all other log messages.

Now we need to record a log message, we use the log() method.

logger.log(Level.LogLevel, "log message");
// Exemplo
logger.log(Level.INFO, "Esta é uma mensagem de log de nível INFO");

Existem alguns métodos abreviados para registrar níveis necessários.

logger.info("Esta é uma mensagem de log de nível INFO");
logger.warning("Esta é uma mensagem de log de nível WARNING");

Então, todas as solicitações de log que passaram pelo nível de log configurado serão encaminhadas paraLogRecord.

Atenção:Se o nível de um registrador de log for definido como null, seu nível será herdado do pai, e assim por diante.

2Filter

o filtro (se existir) decidir se o LogRecord deve encaminhar o registro de log. Como o próprio nome sugere, ele filtra mensagens de log com base em padrões específicos.

SeLogRecordSe as condições especificadas forem atendidas, apenas os registros do registrador serão passados para os manipuladores de log e, em seguida, para o sistema externo.

// Definir filter
logger.setFilter(filter);
// Obter filter
Filter filter = logger.getFilter();

3Output Source

Os manipuladores de log ou complementos receberãoLogRecorde exportá-los para vários destinos.

Java SE oferece5manipuladores integrados:

manipuladoresUsar
StreamHandler

escrever no OutputStream

ConsoleHandlerescrever no console
FileHandlerescrever em arquivo
SocketHandler

escrever em um porta TCP remota

MemoryHandlerescrever em memória

Os manipuladores podemLogRecordpassados para o filtro para determinar novamente se pode ser encaminhado para o sistema externo.

Para adicionar um novo manipulador, usamos o seguinte código:

logger.addHandler(handler);
// Exemplo
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

Para remover o manipulador, usamos o seguinte código:

logger.removeHandler(handler);
// Exemplo
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

Um registrador pode ter vários manipuladores. Para obter todos os manipuladores, usamos o seguinte código:

Handler[] handlers = logger.getHandlers();

4Formatter

os manipuladores podem usarFormatteroLogRecordobjetoformataçãopara strings, e então exportá-las para sistemas externos.

Java SE possui dois componentes integradosFormatter:

FormateadorUsar
SimpleFormatter

Formate LogRecord para string

XMLFormatter

Formate LogRecord para o formato XML

Podemos usar o seguinte código para formatar o manipulador:

// Formate para formato de string
handler.setFormatter(new SimpleFormatter());
// Formate para o formato XML
handler.setFormatter(new XMLFormatter());

Gerenciador de Logs

Gestão de LogsRegistra informações globais de rastreamento de objetos. Ele lê e mantém a configuração de registros e instâncias de registradores.

O gerenciador de logs é um singleton, o que significa que apenas uma instância foi instanciada.

Para obter uma instância do gerenciador de logs, usamos o seguinte código:

LogManager manager = new LogManager();

Vantagens dos Logs

Aqui estão algumas vantagens de usar logs no Java.

  • Ajuda a monitorar o fluxo do programa

  • Ajuda a capturar possíveis erros que possam ocorrer

  • Fornece suporte para diagnósticos e depuração de problemas