List icon Conteúdo

Redirecionando os logs do JxBrowser com o SLF4J

Este tutorial mostra como redirecionar os logs do JxBrowser com o SLF4J.

Pré-requisitos

Para realizar este tutorial, você precisará de:

  • Git.
  • Java 17 ou superior.
  • Uma licença válida do JxBrowser. Pode ser de avaliação ou comercial. Para mais informações sobre o licenciamento , consulte o guia Licenciamento.

Por que redirecionar os logs

O log do JxBrowser é baseado em java.util.logging, uma estrutura de log que vem com o JDK.

Por padrão, os logs do JxBrowser não são capturados por outras bibliotecas de log mais avançadas e podem se perder.

Neste tutorial, vamos demonstrar como redirecionar e capturar logs do JxBrowser com a ajuda do SLF4J.

Configurando um projeto

O código do aplicativo de exemplo para este tutorial está disponível junto com outros exemplos de um repositório do GitHub como um projeto baseado no Gradle.

Obtendo o código

Para obter o código, execute os seguintes comandos:

$ git clone https://github.com/TeamDev-IP/JxBrowser-Examples
$ cd JxBrowser-Examples/tutorials/jul-logs-redirect

Adicionando a licença

Para executar este tutorial, é necessário configurar uma chave de licença.

Adicionando dependências do Gradle

Neste exemplo, utilizamos a biblioteca Log4j com a facade SLF4J.

No arquivo build.gradle.kts, adicionamos as seguintes dependências:

dependencies {
    // Adiciona uma dependência à API SLF4J.
    implementation("org.slf4j:slf4j-api:1.7.36")
    
    // Adiciona uma dependência à ligação Log4j para SLF4J.
    implementation("org.slf4j:slf4j-log4j12:1.7.36")

    // Adiciona uma dependência com o handler SLF4J para JUL.
    implementation("org.slf4j:jul-to-slf4j:1.7.36")
}

Configuração do Log4J

O próximo passo é adicionar o arquivo log4j.properties para configurar o Log4j. Vamos configurar os níveis de log e o caminho para o arquivo de log:

# Definir o registador de raiz com o arquivo appender.
log4j.rootLogger = ALL, FILE

# Definir o appender de arquivo.
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log/log.out

# Define o layout para o appender de arquivos.
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Código de aplicação

Adicione o seguinte código ao método main():

Logger.level(Level.DEBUG);

var jxBrowserLogger =
        LogManager.getLogManager().getLogger("com.teamdev.jxbrowser");
        
for (var handler : jxBrowserLogger.getHandlers()) {
    jxBrowserLogger.removeHandler(handler);
}        

jxBrowserLogger.addHandler(new SLF4JBridgeHandler());

var engine = Engine.newInstance(HARDWARE_ACCELERATED);
engine.close();

Agora vamos ver o que fizemos aqui:

  1. Definir o nível de log do JxBrowser para DEBUG. Para mais informações sobre o log do JxBrowser, consulte o guia Logs.

    Logger.level(Level.DEBUG);
    
  2. Obtenha o registador JxBrowser e remova os handlers existentes ligados a ele.

    var jxBrowserLogger = 
            LogManager.getLogManager().getLogger("com.teamdev.jxbrowser");
    for (var handler : jxBrowserLogger.getHandlers()) {
        jxBrowserLogger.removeHandler(handler);
    }
    
  3. Utilizamos SLF4JBridgeHandler. Ele encaminha os logs da JUL para o SLF4J. Adicione o SLF4JBridgeHandler ao logger do JxBrowser:

    jxBrowserLogger.addHandler(new SLF4JBridgeHandler());
    
  4. Para que o JxBrowser escreva registos de log, crie um Engine:

    var engine = Engine.newInstance(HARDWARE_ACCELERATED);
    engine.close();
    

Aqui está o código Java completo:

import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;

import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.logging.Level;
import com.teamdev.jxbrowser.logging.Logger;
import java.util.logging.LogManager;
import org.slf4j.bridge.SLF4JBridgeHandler;

/**
 * Este exemplo demonstra como capturar registos do JxBrowser utilizando a API SLF4J.
 */
public final class LoggingRedirectExample {

    public static void main(String[] args) {

        // Configurar o nível de registo do JxBrowser.
        Logger.level(Level.DEBUG);

        // Obter o logger do JxBrowser.
        var jxBrowserLogger =
                LogManager.getLogManager().getLogger("com.teamdev.jxbrowser");

        // Remove os manipuladores existentes ligados ao registador JxBrowser.
        for (var handler : jxBrowserLogger.getHandlers()) {
            jxBrowserLogger.removeHandler(handler);
        }

        // Adicionar SLF4JBridgeHandler ao logger JxBrowser para encaminhar registos de log para o SLF4j.
        jxBrowserLogger.addHandler(new SLF4JBridgeHandler());

        // Criar e executar o motor Chromium.
        var engine = Engine.newInstance(HARDWARE_ACCELERATED);
        engine.close();
    }
}

Todos os logs do JxBrowser serão salvos no arquivo log/log.out que foi configurado em nosso arquivo log4j.properties.

Resumo

Neste tutorial, demonstramos como você pode redirecionar os logs do JxBrowser com a API do SLF4J, configurando o Log4j.