Spring Boot Actuator JMX端点的漂亮打印输出

时间:2015-07-31 21:12:16

标签: spring-boot spring-boot-actuator

我有一个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执行器配置为漂亮的打印?是否可以将JMX执行器配置为使用JSON?

有一个关于Pretty print JSON output of Spring Boot Actuator endpoints的相关问题,但在这种情况下,我坚持使用JMX,因为我没有Web应用程序。下一步我将尝试CRaSH,但我很好奇是否可以将JMX执行器配置为更有用。

我正在使用Spring Boot的1.2.5版本。

UPDATE :CRaSH实现使用相同的格式,因此它不是解决方案。

更新2 :我在1.3.0中看到this提交“在所有EndpointMBeans中使用已配置的ObjectMapper,如果可用”,但我不知道要为漂亮设置哪些属性打印。它很接近......

更新3 spring.jackson.serialization.indent_output=true通过CRaSH界面没有任何效果。我现在在1.3.0.M2。

1 个答案:

答案 0 :(得分:2)

您粘贴的输出有效的json文档。是什么让你认为它完全无效?

如果您想要打印格式,那实际上取决于您访问JMX端点的方式。例如,如果您通过JConsole访问它,我不确定漂亮的打印输出对大文档是否可读。如果您手动访问JMX端点,那么您可以非常轻松地读取字符串并完全打印输出(JSONObject具有toString方法,该方法接受您要在文档上应用的缩进)。

关于CRaSH,这真的是无关紧要的。执行器端点位于CRaSH之外,并且不使用其任何功能。

编辑:我的错误,这不是有效的JSON,我在Spring Boot问题跟踪器中创建了#3658