Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何计算apache camel路由的部分时间?_Logging_Apache Camel - Fatal编程技术网

Logging 如何计算apache camel路由的部分时间?

Logging 如何计算apache camel路由的部分时间?,logging,apache-camel,Logging,Apache Camel,我有一个camel应用程序,它在路由生成器中定义了许多路由。其中一个路由有一个xslt管道,我想在splunk中记录它的性能。日志的格式需要为: PerformanceDetailResultMs=<numberOfMsTheXsltsTook> START_TIME和END_TIME变量只是私有的静态字符串,希望可以重用。此代码不起作用,因为开始时间和结束时间是在routeBuilder实例化上设置的,并由spring静态保持。您不会每次通过路由都获得新的时间戳 对操作子集进行计

我有一个camel应用程序,它在路由生成器中定义了许多路由。其中一个路由有一个xslt管道,我想在splunk中记录它的性能。日志的格式需要为:

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函数中设置该属性