2016-05-11 16 views
2

私はLinux上でサービスとしてwildflyを実行しています。サービスとしてのWildfly:一度だけログを記録する方法は?

wildfly配布に含まれているスクリプト[wildflyhome/bin/init.d/wildfly -init-redhat.sh]に基づいて、http://developer-should-know.tumblr.com/post/112230363742/how-to-install-wildfly-as-a-service-on-linuxによく書かれた指示を使用しました。この構成ログ回:まずserver.log中(wildflyhome /スタンドアロン/ログ)で、第二にconsole.logでこのスクリプトは、宣言

JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"

問題を使用しています。これはストレージを無駄にします(そして多少のパフォーマンス)。

は、したがって、私は

JBOSS_CONSOLE_LOG="wildflyhome/standalone/log/server.log"

を設定するしかし、今、各ログエントリがあるserver.logに二度書かれている - :)

質問:はどのように私はwildflyそれは一度だけログインするよう設定することもできますが?

答えて

2

サーバ設定からconsole-handlerを削除できます。デフォルトでは、WildFlyはstdoutとserver.logにログを記録します。 JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"はstdoutからの出力を見ています。

あなたはまたconsole-handler自体を削除することができたい場合は

/subsystem=logging/root-logger=ROOT:remove-handler(name=CONSOLE) 

次のCLIコマンドを実行することができ、コンソールハンドラを削除します。

/subsystem=logging/console-handler=CONSOLE:remove 
+0

サービススクリプトにはコンソールハンドラが必要ですか? – user120513

+0

それは本当にかなり悪い考えであるように見えます。 –

1

サービススクリプトがconsol.logを必要とするかどうかの問題については、私はそれがサービスであるときを把握するために、出力をgrepするため、デフォルトの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スクリプトをすべて書き直したいのでない限り、私はちょうどそれと一緒に暮らしています。

アプリケーションは、標準出力にログアウトするべきではありません。ワイルドフライが起動して実行された後に私が見るのは、キャッチされていないランタイム例外です。

+1

"ストレージは大きな問題ではありません。ワイルドフライが起動するたびに、スクリプトが/ dev/nullをログにコピーするためです。最大サイズを設定したり、日付を削除したりすることができます。 – Wallkan

0

Wildfly 11.0.0.FinalでWindowsサービスと同様の問題がありました。 Wildflyサービスは2つの追加ログファイルを作成しました。例:
wildfly-stderr.2017-11-22.log
wildfly-stdout.2017-11-22.log
は、それが標準出力ファイルにすべてのログの両方を保存してSERVER.LOGします。

古いバージョンのSpringブートロギングの問題により、コンソールハンドラを無効にできませんでした。代わりに、私はサービスを編集しました。バットと変更され、この行:これに

if "%STDOUT%"=="" set STDOUT=auto 
if "%STDERR%"=="" set STDERR=auto 

if "%STDOUT%"=="" set STDOUT="" 
if "%STDERR%"=="" set STDERR="" 

それは正しく、この伐採作業の後に(アンインストールして、再度サービスをインストールすることを忘れないでください)ということになります。これでログはserver.logにのみ保存されます。私はこれをしばらく試してみて、欠けているログは見ない。

関連する問題