0

Spring Boot コンソール アプリケーションがあり、JMX 経由でアクチュエータ エンドポイントにアクセスします。問題は、返されたテキストがきれいに印刷されておらず、JSON ではないことです。次のようになります。

{context=application, parent=null, beans=[{bean=helloWorldApplication, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldApplication, resource=null, dependencies=[helloWorldService]}, {bean=helloWorldService, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldService, resource=file [C:/src-tmp/spring-skeleton/target/classes/com/surpreso/spring_skeleton/HelloWorldService.class], dependencies=[]}, {bean=com.surpreso.spring_skeleton.DefaultConfig,  ...

これを読み取り可能な形式にする最良の方法は何ですか? JMX アクチュエーターをプリティプリントに設定することは可能ですか? JSON を使用するように JMX アクチュエーターを構成することは可能ですか?

Spring Boot Actuator endpoints の Pretty print JSON outputに関する関連する質問がありますが、この場合、Web アプリケーションがないため、JMX に行き詰まっています。次のステップとして、CRaSH を試してみますが、JMX アクチュエーターをより使いやすいように構成できるかどうか興味がありました。

Spring Boot のバージョン 1.2.5 を使用しています。

UPDATE : CRaSH 実装は同じ形式を使用するため、解決策ではありません。

更新 2 : 1.3.0 で、「すべての EndpointMBean で利用可能な場合は、構成済みの ObjectMapper を使用する」というコミットが見られますが、プリティ プリント用に設定するプロパティがわかりません。近いです...

UPDATE 3 : spring.jackson.serialization.indent_output=trueCRaSH インターフェースを介した効果はありませんでした。私は今 1.3.0.M2 を使用しています。

4

1 に答える 1

2

貼り付けた出力、有効な json ドキュメントです。正確に無効だと思う理由は何ですか?

フォーマットをきれいに印刷したい場合は、JMX エンドポイントへのアクセス方法に大きく依存します。たとえば、JConsole を介してアクセスしている場合、きれいに印刷された出力が大きなドキュメントで読みやすいかどうかはわかりません。JMX エンドポイントに手動でアクセスしている場合は、文字列を読み取り、出力を非常に簡単にきれいに印刷できます (ドキュメントに適用するインデントを取得JSONObjectするメソッドがあります)。toString

CRaSHに関しては、それは本当に関係ありません。アクチュエータ エンドポイントは CRaSH の外部に存在し、その機能を使用しません。

編集: 私の間違いです。これは有効な JSON ではありません。Spring Boot の問題トラッカーで#3658を作成しました。

于 2015-08-03T07:13:03.443 に答える