Logging 如何计算apache camel路由的部分时间?
我有一个camel应用程序,它在路由生成器中定义了许多路由。其中一个路由有一个xslt管道,我想在splunk中记录它的性能。日志的格式需要为:Logging 如何计算apache camel路由的部分时间?,logging,apache-camel,Logging,Apache Camel,我有一个camel应用程序,它在路由生成器中定义了许多路由。其中一个路由有一个xslt管道,我想在splunk中记录它的性能。日志的格式需要为: PerformanceDetailResultMs=<numberOfMsTheXsltsTook> START_TIME和END_TIME变量只是私有的静态字符串,希望可以重用。此代码不起作用,因为开始时间和结束时间是在routeBuilder实例化上设置的,并由spring静态保持。您不会每次通过路由都获得新的时间戳 对操作子集进行计
PerformanceDetailResultMs=<numberOfMsTheXsltsTook>
START_TIME和END_TIME变量只是私有的静态字符串,希望可以重用。此代码不起作用,因为开始时间和结束时间是在routeBuilder实例化上设置的,并由spring静态保持。您不会每次通过路由都获得新的时间戳
对操作子集进行计时的正确“驼峰方式”是什么,这样我就可以输出如下日志语句:
PerformanceDetailResultMs=489234
我想到的最简单的事情是
.process(exchange->exchange.setProperty(START_TIME,System.currentTimeMillis()))
我想到的最简单的事情是
.process(exchange->exchange.setProperty(START_TIME,System.currentTimeMillis()))
如果你在寻找统计数据,请看下面的例子。您可以按如下方式设置计时器度量:
from("direct:somewhere")
.to("metrics:timer:your.time?action=start")
.to("xslt:templates/bop1.xslt?saxon=true")
.to("metrics:timer:your.timer?action=stop");
Splunk可以解析Json,因此要提取指标,可以设置计时器以Json格式打印:
MetricsRoutePolicyFactory factory = new MetricsRoutePolicyFactory();
factory.setPrettyPrint(true);
context.addRoutePolicyFactory(factory);
默认情况下,这会每60秒打印一次度量,但您可以对此进行更改
但是,如果您确实需要每条消息的单独日志,那么正如@Sagar所建议的,您可以在lambda函数中设置属性。如果您需要统计信息,请查看。您可以按如下方式设置计时器度量:
from("direct:somewhere")
.to("metrics:timer:your.time?action=start")
.to("xslt:templates/bop1.xslt?saxon=true")
.to("metrics:timer:your.timer?action=stop");
Splunk可以解析Json,因此要提取指标,可以设置计时器以Json格式打印:
MetricsRoutePolicyFactory factory = new MetricsRoutePolicyFactory();
factory.setPrettyPrint(true);
context.addRoutePolicyFactory(factory);
默认情况下,这会每60秒打印一次度量,但您可以对此进行更改
但是,如果您确实需要每条消息的单独日志,那么正如@Sagar所建议的,您可以在lambda函数中设置该属性