DOM
SWT
Integration
Logging
IDE
使用 SLF4J 重定向 JxBrowser 日志
本教程展示了如何使用 SLF4J 重定向 JxBrowser 日志。
前提条件
要完成本教程,您将需要:
- Git.
- Java 8 或更高版本。
- 一个有效的 JxBrowser 许可证。它可以是评估版或商业版。关于许可证的更多信息,请参见许可证指南。
为什么重定向日志
JxBrowser 的日志记录是基于 java.util.logging 的,是一个 JDK 自带的日志记录框架。
默认情况下,JxBrowser 日志不会被其他更高级的日志库捕获,并且可能会丢失。
在本教程中,我们将演示如何借助 SLF4J 重定向和捕获 JxBrowser 日志。
设置一个项目
本教程示例应用程序的代码可以作为基于 Gradle 的项目从 GitHub 存储库中获得。
获取代码
要获取代码,请执行以下命令:
$ git clone https://github.com/TeamDev-IP/JxBrowser-Examples
$ cd JxBrowser-Examples/tutorials/jul-logs-redirect
添加许可证
要运行本教程,您需要设置一个许可证密钥。
添加 Gradle 依赖项
在此示例中,我们使用带有 SLF4J 外观的 Log4j 库。
在 build.gradle.kts
中,我们添加以下依赖项:
dependencies {
// Adds a dependency to the SLF4J API.
implementation("org.slf4j:slf4j-api:1.7.36")
// Adds a dependency to the Log4j binding for SLF4J.
implementation("org.slf4j:slf4j-log4j12:1.7.36")
// Adds a dependency with SLF4J handler for JUL.
implementation("org.slf4j:jul-to-slf4j:1.7.36")
}
配置 Log4J
下一步是添加 log4j.properties
文件来配置 Log4j。让我们配置日志级别和日志文件的路径:
# Define the root logger with the appender file.
log4j.rootLogger = ALL, FILE
# Define the file appender.
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log/log.out
# Define the layout for file appender.
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
应用程序代码
将以下代码添加到 main()
方法中:
Logger.level(Level.DEBUG);
java.util.logging.Logger jxBrowserLogger =
LogManager.getLogManager().getLogger("com.teamdev.jxbrowser");
for (java.util.logging.Handler handler : jxBrowserLogger.getHandlers()) {
jxBrowserLogger.removeHandler(handler);
}
jxBrowserLogger.addHandler(new SLF4JBridgeHandler());
Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);
engine.close();
现在让我们看看我们在这里做了什么:
-
将 JxBrowser 日志级别设置为 DEBUG。 有关 JxBrowser 日志记录的更多信息,请参阅日志记录指南。
Logger.level(Level.DEBUG);
-
获取 JxBrowser 记录器,并删除附加在它身上的现有处理程序。
java.util.logging.Logger jxBrowserLogger = LogManager.getLogManager().getLogger("com.teamdev.jxbrowser"); for (java.util.logging.Handler handler : jxBrowserLogger.getHandlers()) { jxBrowserLogger.removeHandler(handler); }
-
我们使用
SLF4JBridgeHandler
, 将日志从 JUL 路由到 SLF4J。 将SLF4JBridgeHandler
添加到 JxBrowser 记录器:jxBrowserLogger.addHandler(new SLF4JBridgeHandler());
-
要让 JxBrowser 写入日志记录,需要创建一个
Engine
:Engine engine = Engine.newInstance(HARDWARE_ACCELERATED); engine.close();
下面是完整的 Java 代码:
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;
/**
* This example demonstrates how to capture JxBrowser logs using SLF4J API.
*/
public final class LoggingRedirectExample {
public static void main(String[] args) {
// Configure JxBrowser logging level.
Logger.level(Level.DEBUG);
// Get the JxBrowser logger.
java.util.logging.Logger jxBrowserLogger =
LogManager.getLogManager().getLogger("com.teamdev.jxbrowser");
// Remove existing handlers attached to the JxBrowser logger.
for (java.util.logging.Handler handler : jxBrowserLogger.getHandlers()) {
jxBrowserLogger.removeHandler(handler);
}
// Add SLF4JBridgeHandler to the JxBrowser logger to route log records to the SLF4j.
jxBrowserLogger.addHandler(new SLF4JBridgeHandler());
// Creating and running Chromium engine.
Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);
engine.close();
}
}
所有 JxBrowser 日志都将保存在我们的log4j.properties
文件中配置的 log/log.out
文件中。
总结
在本教程中,我们已经演示了如何通过配置 Log4j 使用 SLF4J API 重定向 JxBrowser 日志。