在wildfly服务器参数中提供catalina.home值

时间:2019-04-22 11:38:04

标签: log4j wildfly-10 catalina

我正在使用log4j登录我的项目。在log4j.xml中,我提供了在变量catalina.home的帮助下生成的日志文件的路径。您可以在下面找到以下代码段:

  <appender name="MyAppender1" class="org.apache.log4j.DailyRollingFileAppender">
     <param name="File" value="${catalina.home}/MyLog.log" />
     <param name="DatePattern" value="'.'yyyy-MM-dd" />
     <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="[%p] %d %c %M - %m%n"/>          
     </layout>
  </appender>

我想通过使用 JBOSS_LOG_DIR 变量的值(通过使用此命令)在standalone.conf.bat内部的参数中提供catalina.home的值

set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman -Dcatalina.home=%JBOSS_LOG_DIR%"

但是我得到的只是在 catalina.home 前面的空白值,如在启动服务器时生成的日志中所见。

-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Dcatalina.home= -Dorg.jboss.boot.log.file=D:\Softwares\wildfly_2\standalone\log\server.log -Dlogging.configuration=file:D:\Softwares\wildfly_2\standalone\configuration/logging.properties

如果我在此处给出的是静态路径而不是JBOSS_LOG_DIR变量,则它工作正常。

此外,我尝试在以下代码的 standalone.sh 中将其设置为 JBOSS_LOG_DIR (已评论):

    while true; do
   if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
      # Execute the JVM in the foreground
      eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \
        \"-Dcatalina.home="$JBOSS_LOG_DIR"\"\
         \"-Dorg.jboss.boot.log.file="$JBOSS_LOG_DIR"/server.log\" \
         \"-Dlogging.configuration=file:"$JBOSS_CONFIG_DIR"/logging.properties\" \
         #\"-Dcatalina.home="$JBOSS_LOG_DIR"\"\#
         -jar \""$JBOSS_HOME"/jboss-modules.jar\" \
         $MODULE_OPTS \
         -mp \""${JBOSS_MODULEPATH}"\" \
         org.jboss.as.standalone \
         -Djboss.home.dir=\""$JBOSS_HOME"\" \
         -Djboss.server.base.dir=\""$JBOSS_BASE_DIR"\" \
         "$SERVER_OPTS"
      JBOSS_STATUS=$?
   else
      # Execute the JVM in the background
      eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \
        \"-Dcatalina.home="$JBOSS_LOG_DIR"\"\
         \"-Dorg.jboss.boot.log.file="$JBOSS_LOG_DIR"/server.log\" \
         \"-Dlogging.configuration=file:"$JBOSS_CONFIG_DIR"/logging.properties\" \
          #\"-Dcatalina.home="$JBOSS_LOG_DIR"\"\#
         -jar \""$JBOSS_HOME"/jboss-modules.jar\" \
         $MODULE_OPTS \
         -mp \""${JBOSS_MODULEPATH}"\" \
         org.jboss.as.standalone \
         -Djboss.home.dir=\""$JBOSS_HOME"\" \
         -Djboss.server.base.dir=\""$JBOSS_BASE_DIR"\" \
         "$SERVER_OPTS"

但是在这种情况下, -Dcatalina.home 本身并未出现在字符串中。您能帮我哪里出问题了吗?预先感谢

1 个答案:

答案 0 :(得分:1)

如果您使用的是standalone.sh,则需要在JAVA_OPTS中编辑standalone.conf。并非以.bat脚本结尾的那个standalone.bat

您遇到的另一个问题是在执行JBOSS_LOG_DIR之后设置standalone.conf

一种选择是在您的jboss.server.log.dir文件中使用catalina.home属性而不是log4j.xml。另一种选择是做类似JAVA_OPTS="$JAVA_OPTS -Dcatalina.home=$JBOSS_HOME/standalone/log的事情。但是,首选使用先前的选项。