如何将.json格式登录到Mule中的stdout?

时间:2016-05-23 09:02:43

标签: json logging mule stdout

我尝试将我的日志发布到stdout。这工作正常,但我必须将其重写为.json格式。

我尝试使用以下内容: (在github)上找到了这个想法

<Appenders>
        <Console name="stdout" target="SYSTEM_OUT">
            <LogStashJSONLayout>

            <!-- Example of what you might do to add fields, warning values should be known to be json escaped strings -->
            <KeyValuePair key="application_name" value="${sys:application.name}"/>
            <KeyValuePair key="application_version" value="${sys:application.version}"/>
            <KeyValuePair key="environment_type" value="${sys:deploy_env}"/>
            <KeyValuePair key="cluster_location" value="${sys:cluster_location}"/>
            <KeyValuePair key="cluster_name" value="${sys:cluster_name}"/>
            <KeyValuePair key="hostname" value="${sys:hostname}"/>
            <KeyValuePair key="host_ip" value="${sys:host_ip}"/>

            <!--Example of using system property substitution -->
            <KeyValuePair key="application_user" value="${sys:user.name}"/>

            <!--Example of using environment property substitution  env:USERNAME on windows-->
            <KeyValuePair key="environment_user" value="${env:USER}"/> 
          </LogStashJSONLayout>
        </Console>

但这不起作用。我在纯文本中看到我登录stdout。 像这样:

please check your split expression
Processing bucket : entityresolution-datasets
Splitter returned no results. If this is not expected, please check your split expression
Processing bucket : mesos-exhibitors3bucket-10oeaynyppkt7
Splitter returned no results. If this is not expected, please check your split expression
Processing bucket : process-log
Splitter returned no results. If this is not expected, please check your split expression
Processing bucket : segmentation-datasets
Splitter returned no results. If this is not expected, please check your split expression

所以我想以LogStashJSONLayout格式使用我的logstash输出并打印到控制台而不是使用套接字发布它。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但最终找到了符合我需求的解决方案。 我在我的应用程序中使用了JSONLayout.java file on Github

我将文件添加到包中的src / main / java文件夹(例如com.example.log4j2),我的log4j2 xml文件如下所示:

<Configuration packages="com.example.log4j2" verbose="false">
<Appenders>
    <Console name="stdout" target="SYSTEM_OUT">
        <JSONLayout>
        </JSONLayout>
   </Console>
</Appenders>
...
<Loggers>
    ...
    <AsyncRoot level="WARN">
        <AppenderRef ref="stdout" />
    </AsyncRoot>
</Loggers>

让我知道这是否适合你。我对包的名称和@Plugin(name = ...)进行了一些更改,所以我可能搞砸了。