我在Linux上运行wildfly作为服务。
我在http://developer-should-know.tumblr.com/post/112230363742/how-to-install-wildfly-as-a-service-on-linux上使用了写得很好的指令,该指令基于wildfly发行版中包含的脚本[wildflyhome / bin / init.d / wildfly-init-redhat.sh]。该脚本使用声明
JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"
问题:此配置会记录两次:首先在server.log
(在wildflyhome / standalone / log中),然后在console.log
中。这浪费了存储(可能还有一些性能)。
因此我设置了
JBOSS_CONSOLE_LOG="wildflyhome/standalone/log/server.log"
但现在每个日志条目都写入server.log - :)
问题:如何配置wildfly以便只记录一次?
答案 0 :(得分:2)
您可以从服务器配置中删除console-handler
。默认情况下,WildFly会记录到标准输出和server.log
。 JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"
正在查看stdout的输出。
要删除控制台处理程序,您可以执行以下CLI命令
/subsystem=logging/root-logger=ROOT:remove-handler(name=CONSOLE)
如果您还想要,也可以删除console-handler
本身。
/subsystem=logging/console-handler=CONSOLE:remove
答案 1 :(得分:2)
我在Wildfly 11.0.0.Final上遇到与Windows服务类似的问题。 Wildfly服务创建了两个额外的日志文件。例如:
wildfly-stderr.2017-11-22.log
wildfly-stdout.2017-11-22.log
它将所有日志保存到stdout文件和server.log。
由于旧版本上的Spring Boot日志记录问题,我无法关闭控制台处理程序。相反,我编辑了service.bat并更改了这一行:
if "%STDOUT%"=="" set STDOUT=auto
if "%STDERR%"=="" set STDERR=auto
对此:
if "%STDOUT%"=="" set STDOUT=""
if "%STDERR%"=="" set STDERR=""
看起来这个日志记录工作正常后(记得再次卸载并安装服务)。现在它只将日志保存到server.log。我测试了一段时间,没有看到任何丢失的日志。
答案 2 :(得分:1)
关于服务脚本是否需要consol.log的问题,我会说“是”,默认的init.d脚本确实需要控制台处理程序,因为它会使输出变为灰色,以确定服务启动和运行的时间:
cat /dev/null > "$JBOSS_CONSOLE_LOG"
if [ "$JBOSS_MODE" = "standalone" ]; then
start-stop-daemon --start --user "$JBOSS_USER" \
--chuid "$JBOSS_USER" --chdir "$JBOSS_HOME" --pidfile "$JBOSS_PIDFILE" \
--exec "$JBOSS_SCRIPT" -- -c $JBOSS_CONFIG $JBOSS_OPTS >> "$JBOSS_CONSOLE_LOG" 2>&1 &
else
start-stop-daemon --start --user "$JBOSS_USER" \
--chuid "$JBOSS_USER" --chdir "$JBOSS_HOME" --pidfile "$JBOSS_PIDFILE" \
--exec "$JBOSS_SCRIPT" -- --domain-config=$JBOSS_DOMAIN_CONFIG \
--host-config=$JBOSS_HOST_CONFIG $JBOSS_OPTS >> "$JBOSS_CONSOLE_LOG" 2>&1 &
fi
count=0
launched=0
until [ $count -gt $STARTUP_WAIT ]
do
grep 'JBAS015874:' "$JBOSS_CONSOLE_LOG" > /dev/null
if [ $? -eq 0 ] ; then
launched=1
break
fi
sleep 1
count=$((count + 1));
done
看一下,我会说存储不是主要问题,因为每次Wildfly启动时脚本都会将/ dev / null复制到日志中。并且因为它为给定的代码'JBAS015874'打算知道服务器已启动,除非您想在每次启动时删除整个server.log,否则您将不得不重写该位(或者它将从以前的初创公司!)。
所以,除非你想重写所有的init脚本,否则我只会忍受它。
无论如何,应用程序不应该记录到标准。在wildfly启动并运行之后,我唯一看到的是未被捕获的运行时异常......
答案 3 :(得分:0)
在root-logger的domain:logging:3.0子系统下,注释掉
<handler name="CONSOLE"/> as below
<!--handler name="CONSOLE"/-->
然后,重新启动Wildfly服务。标准输出日志将不再被写入。希望这会有所帮助