◀返回
在原生可执行文件中添加日志
默认情况下,由 Native Image 生成的原生可执行文件通过java.util.logging.*
API 支持日志记录。
默认日志记录配置
原生可执行文件中的默认日志记录配置基于 JDK 中的logging.properties
文件。此文件配置了一个java.util.logging.ConsoleHandler
,它只显示INFO
级别及以上的日志消息。自定义日志记录配置可以在构建时或运行时加载,如下所述。
如果您需要额外的日志记录处理程序,则必须注册相应的反射类。例如,如果您使用java.util.logging.FileHandler
,则提供以下反射配置
{
"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文件中。
_文件夹。有关如何执行此操作的更多详细信息,请参见[原生可执行文件中的资源使用](/latest/reference-manual/native-image/metadata/#resources)。