2017-06-23 16 views
0

テストサーバー(ssh経由でサーバーにアクセスできない外部ベンダー)のログファイルを簡単に表示/ダウンロードできます。Jboss EAP 7ウェルカムコンテンツのログファイルへのシンボリックリンクが機能しない

何私が{JBossのホーム} /歓迎-コンテンツフォルダ内行うことを試みた:

のln -s {JBossのホーム} /standalone/log/server.logのserver.log

このログファイルへのシンボリックリンクを作成しますが、ログファイルをchrome:http:// {internal ip}:8080/server.logで表示しようとすると動作しません。

私はln -Pを実行すると物理的なリンクを作成しますが、ログファイルがロールオーバーすると(つまり、終わり)、そのログファイルは新しいserver.logではなく古いログファイルを指しています。望ましくない。

また、新しいwarファイルを作成し、ログファイルを表示するためだけにそれを配備するという手間を省いています。

アイデア?

+0

解決策はありませんが、回避策があります。夜間にビルドするので、サーバが起動した後、シェルスクリプトはln -Pコマンドを実行します。それでもシンボリックリンクがウェルカムコンテンツで動作しない理由は不明です – Stefan

+0

EAP 7では、管理コンソールでログファイルをチェックすることができます。これにより、サーバーログディレクトリからのログファイルが表示されます。そのアプローチで試してみましたか? – Abhijit

+0

提案していただきありがとうございます。 "failure-description" => "WFLYCTL0030:アドレス[(サブシステム\" =ロギング\ ")アドレス]にリソース定義が登録されていません。 私は推測していますこれは私たちがlog4jと矛盾していたstandalone.xmlのデフォルト設定を削除したことによる。 – Stefan

答えて

2

コメントで、ロギングサブシステムを削除したとしますが、HTTP管理インターフェイス経由でログファイルをダウンロードする方法はいくつかあります。ログサブシステムが存在する必要があり、ログファイルはjboss.server.log.dirと既知のファイルハンドラにある必要があります。

curl --digest -L -D - http://127.0.0.1:9990/management?useStreamAsResponse --header "Content-Type: application/json" -u admin:admin.1234 -d '{"operation":"read-attribute","address":[{"subsystem":"logging"},{"log-file":"server.log"}],"name":"stream"}' -o server.log 

またはブラウザで:カールで

http://localhost:9990/management/subsystem/logging/log-file/server.log?operation=attribute&name=stream&useStreamAsResponse

別のコメントあなたは、管理コンソール自体を使用することができます言及しています。

さらに、管理APIを使用してダウンロードする独自の関数を作成することもできます。

try (ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getLocalHost(), 9990)) { 
    final ModelNode address = Operations.createAddress("subsystem", "logging", "log-file", "server.log"); 
    final ModelNode op = Operations.createReadResourceOperation(address); 
    op.get("include-runtime").set(true); 
    final OperationResponse response = client.executeOperation(OperationBuilder.create(op).build(), OperationMessageHandler.logging); 
    final ModelNode outcome = response.getResponseNode(); 
    if (Operations.isSuccessfulOutcome(outcome)) { 
     final String uuid = Operations.readResult(outcome).get("stream").asString(); 
     final InputStream in = response.getInputStream(uuid).getStream(); 
     final byte[] buffer = new byte[64]; 
     int len; 
     while ((len = in.read(buffer)) != -1) { 
      System.out.write(buffer, 0, len); 
     } 
    } 
} 

これらのすべてのオプションでは、ログサブシステムを使用する必要があります。

+0

あなたの提案が価値のあるものであれば、今後誰かのために有効な解決策になるかもしれない。 – Stefan

+0

理解しやすいです。私は主に、ロギングサブシステムを使用しないことに関するコメントだったので、私は主に「現状のまま」質問に答えます。 –

関連する問題