如何在打包vertx fat jar后调整日志级别?

rainmanhhh
  • 5
新手上路,请多包涵

vertx打包使用了fat jar插件,log4j2.xml会被打包到jar文件里,运行时使用java -jar启动无法修改classpath,也就无法修改日志级别

如果用springboot的话,可以通过命令行参数--spring.profiles.active=test在启动时指定要使用的配置文件(故可以在启动时变更日志级别),vertx如何做到类似的功能呢

回复
阅读 1.4k
3 个回答
Feng_Yu
  • 10.7k

log4j2支持变量注入啊,比如:

<Root level="${LOG_LEVEL:DEBUG}">

详情参考官方文档: https://logging.apache.org/lo...

启动的时候就可以通过环境变量或者system property注入替换默认值了啊。

当然你也可以做一个接口(比如ssh或者http)动态调整Logger日志级别,那样会稍微复杂点,没有动态调整日志级别需求的话没必要搞这么复杂

fat jar运行时也可以设置classpath。

  • 先用压缩工具打开JAR文件META-INF/MANIFEST.MF文件,查看其中的Main-Class属性值,假如是aa.Test
  • 命令行如下执行: java -cp .;yourfat.jar aa.Test

你可以在当前目录“.”下放置需要的文件,搜索路径优先于yourfat.jar

rainmanhhh
  • 5
新手上路,请多包涵

已经找到了解决办法

java $JVM_OPTS \
  -Dlog4j2.configurationFile=conf/log4j2.xml \
  -jar *.jar \
  --add-opens java.base/java.util=ALL-UNNAMED \
  --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
  > /dev/null &

设置log4j2.configurationFile即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏