◀返回
为本机可执行文件添加日志功能
默认情况下,由 Native Image 生成的本机可执行文件支持通过 java.util.logging.*
API 进行日志记录。
默认日志配置
本机可执行文件中的默认日志配置基于 JDK 中找到的 logging.properties 文件。此文件配置了一个 java.util.logging.ConsoleHandler
,它将只显示 INFO
级别及以上的信息。自定义日志配置可以在构建时或运行时加载,如下所述。
如果您需要额外的日志处理程序,则必须注册相应的类以进行反射。例如,如果您使用 java.util.logging.FileHandler
,则在 META-INF/native-image/reachability-metadata.json 文件中提供以下反射配置
{
"name" : "java.util.logging.FileHandler",
"methods" : [
{ "name" : "<init>", "parameterTypes" : [] }
]
}
有关更多详细信息,请参阅反射支持。
日志记录器的用法示例如下所示
-
将以下 Java 代码保存到名为 LoggerRunTimeInit.java 的文件中,并编译它
import java.io.IOException; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; public class LoggerRunTimeInit { public static void main(String[] args) throws IOException { LogManager.getLogManager().readConfiguration(LoggerRunTimeInit.class.getResourceAsStream("/logging.properties")); Logger logger = Logger.getLogger(LoggerRunTimeInit.class.getName()); logger.log(Level.WARNING, "Danger, Will Robinson!"); } }
javac LoggerRunTimeInit.java
-
下载 logging.properties 资源文件并将其保存在与 LoggerRunTimeInit.java 相同的目录中。
-
构建并运行本机可执行文件
native-image LoggerRunTimeInit -H:IncludeResources="logging.properties"
./loggerruntimeinit
它应该产生类似于以下内容的输出
WARNING: Danger, Will Robinson! [Wed May 18 17:22:40 BST 2022]
在这种情况下,logging.properties 文件必须可用于运行时处理,因此需要将其注册到 META-INF/native-image/reachability-metadata.json 文件中。有关如何执行此操作的更多详细信息,请参阅本机可执行文件中的资源使用。