日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache camel_Apache Camel日志组件示例

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache camel_Apache Camel日志组件示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

apache camel

Apache Camel日志組件示例

您要將消息記錄到底層的記錄機制中,請使用駱駝的log:組件。 Camel使用sfl4j作為記錄器API,然后允許您配置記錄器實現。 在本文中,我們將使用Log4j作為實際的記錄器機制。 讓我們從我們的例子開始。

依存關系

您需要添加:

  • slf4j-api – SLF4J Logger API
  • slf4j-log4j12 – Log4j作為記錄器的實現
  • pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.javarticles.camel</groupId><artifactId>camelHelloWorld</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.camel</groupId><artifactId>camel-core</artifactId><version>2.15.1</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-stream</artifactId><version>2.15.1</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-jms</artifactId><version>2.15.1</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-camel</artifactId><version>5.6.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.5.RELEASE</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-spring</artifactId><version>2.15.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version></dependency></dependencies> </project>

    日志組件URI格式

    日志的uri格式:

    log:loggingCategory[?options]

    您可以使用選項來設置級別或格式設置選項。 例如:

    log:com.javarticles?level=INFO

    在我的log4.properties中,root logger記錄到文件以及控制臺,而它僅記錄com.javarticles類別的文件。 log4j.properties:

    # Root logger option log4j.rootLogger=INFO, file, consolelog4j.logger.com.javarticles=INFO, file# Direct log messages to a log file log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=javarticles.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d | %p | %F %L | %m%n# Direct log messages to stdout log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{HH:mm}| %p | %F %L | %m%n

    駱駝原木組件示例

    CamelLog示例:

    package com.javarticles.camel.components;import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.util.jndi.JndiContext;public class CamelLogExample {public static final void main(String[] args) throws Exception {JndiContext jndiContext = new JndiContext();jndiContext.bind("stringUtils", new StringUtils());CamelContext camelContext = new DefaultCamelContext(jndiContext);try {camelContext.addRoutes(new RouteBuilder() {public void configure() {from("direct:logExample").log("Before converting to uppercase").to("log:?level=INFO&showBody=true").to("bean:stringUtils?method=upperCase").log("After converting to uppercase").to("log:com.javarticles?level=INFO&showAll=true");}});ProducerTemplate template = camelContext.createProducerTemplate();camelContext.start();template.sendBody("direct:logExample", "Log me!");} finally {camelContext.stop();}} }

    輸出:

    12:09| INFO | DefaultCamelContext.java 2454 | Apache Camel 2.15.1 (CamelContext: camel-1) started in 0.307 seconds 12:09| INFO | MarkerIgnoringBase.java 95 | Before converting to uppercase 12:09| INFO | MarkerIgnoringBase.java 95 | Exchange[ExchangePattern: InOnly, BodyType: String, Body: Log me!] 12:09| INFO | MarkerIgnoringBase.java 95 | After converting to uppercase 12:09| INFO | MarkerIgnoringBase.java 95 | Exchange[Id: ID-INMAA1-L1005-54363-1431153589693-0-2, ExchangePattern: InOnly, Properties: {CamelCreatedTimestamp=Sat May 09 12:09:50 IST 2015, CamelMessageHistory=[DefaultMessageHistory[routeId=route1, node=log1], DefaultMessageHistory[routeId=route1, node=to1], DefaultMessageHistory[routeId=route1, node=to2], DefaultMessageHistory[routeId=route1, node=log2], DefaultMessageHistory[routeId=route1, node=to3]], CamelToEndpoint=log://com.javarticles?level=INFO&showAll=true}, Headers: {breadcrumbId=ID-INMAA1-L1005-54363-1431153589693-0-1}, BodyType: String, Body: LOG ME!, Out: null: ] 12:09| INFO | DefaultCamelContext.java 2660 | Apache Camel 2.15.1 (CamelContext: camel-1) is shutting down

    自定義Exchange格式化程序

    如果您在上述日志中注意到,即使對于showBody=true情況,它也會打印有效負載以及與交換相關的屬性,例如ExchangePattern和BodyType 。 我們可以自定義想要在日志中看到的內容。 讓我們看看如何實現它。 通過實現ExchangeFormatter接口來實現自定義格式器類。 從Exchange對象中選擇我們要記錄的元素。 在我們的自定義交換格式化程序中,我們只想查看有效負載文本,因此format(Exchange)返回的是入站請求消息。 MyExchangeFormatter:

    package com.javarticles.camel.components;import org.apache.camel.Exchange; import org.apache.camel.spi.ExchangeFormatter;public class MyExchangeFormatter implements ExchangeFormatter {public String format(Exchange exchange) {return exchange.getIn().getBody(String.class);}}

    您需要將foamtter對象與鍵logFormatter 。

    jndiContext.bind("logFormatter", new MyExchangeFormatter());

    CamelLogExchangeFormatter示例:

    package com.javarticles.camel.components;import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.util.jndi.JndiContext;public class CamelLogExchangeFormatterExample {public static final void main(String[] args) throws Exception {JndiContext jndiContext = new JndiContext();jndiContext.bind("stringUtils", new StringUtils());jndiContext.bind("logFormatter", new MyExchangeFormatter());CamelContext camelContext = new DefaultCamelContext(jndiContext);try {camelContext.addRoutes(new RouteBuilder() {public void configure() {from("direct:logExample").log("Before converting to uppercase").to("log:?level=INFO").to("bean:stringUtils?method=upperCase").log("After converting to uppercase").to("log:com.javarticles?level=INFO");}});ProducerTemplate template = camelContext.createProducerTemplate();camelContext.start();template.sendBody("direct:logExample", "Log me!");} finally {camelContext.stop();}} }

    StringUtils:

    package com.javarticles.camel.components;public class StringUtils {public String upperCase(String msg) {return msg.toUpperCase();} }

    輸出:

    14:28| INFO | MarkerIgnoringBase.java 95 | Before converting to uppercase 14:28| INFO | MarkerIgnoringBase.java 95 | Log me! 14:28| INFO | MarkerIgnoringBase.java 95 | After converting to uppercase 14:28| INFO | MarkerIgnoringBase.java 95 | LOG ME!

    吞吐量記錄器示例

    消息(本例中為數字)被發送到activemq隊列numbers ,路由中的下一個目標將每10秒記錄一次消息統計信息。 使用groupInterval=10000選項配置間隔。

    <route><from uri="activemq:queue:numbers" /><to uri="log:com.javarticles?level=INFO&groupInterval=10000" /> </route>

    applicationContext.xml:

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL" value="vm://localhost?broker.persistent=false" /></bean><bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"><property name="connectionFactory" ref="connectionFactory" /></bean><camelContext xmlns="http://camel.apache.org/schema/spring"><route><from uri="activemq:queue:numbers" /><to uri="log:com.javarticles?level=INFO&groupInterval=10000" /></route></camelContext> </beans>

    CamelThroughputLogger示例:

    package com.javarticles.camel.components;import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.spring.SpringCamelContext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class CamelThroughputLoggerExample {public static final void main(String[] args) throws Exception {ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);try {ProducerTemplate template = camelContext.createProducerTemplate();camelContext.start(); for (int i = 0; i <18000; i++) {template.sendBody("activemq:queue:numbers", i);}Thread.sleep(10000);} finally {camelContext.stop();}} }

    輸出:

    19:04| INFO | MarkerIgnoringBase.java 95 | Received: 281 new messages, with total 281 so far. Last group took: 470 millis which is: 597.872 messages per second. average: 597.872 19:04| INFO | MarkerIgnoringBase.java 95 | Received: 14802 new messages, with total 15083 so far. Last group took: 10001 millis which is: 1,480.052 messages per second. average: 1,440.455 19:05| INFO | MarkerIgnoringBase.java 95 | Received: 2917 new messages, with total 18000 so far. Last group took: 10000 millis which is: 291.7 messages per second. average: 879.293

    下載源代碼

    這是有關駱駝原木組件的示例。 您可以在此處下載源代碼: camelLogComponentExamples.zip

    翻譯自: https://www.javacodegeeks.com/2015/05/apache-camel-log-component-examples.html

    apache camel

    總結

    以上是生活随笔為你收集整理的apache camel_Apache Camel日志组件示例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 91亚色视频| 经典杯子蛋糕日剧在线观看免费 | 精品视频在线播放 | 三级国产三级在线 | 性色在线观看 | 视频一区二区欧美 | 九月婷婷综合 | 啪啪av导航 | 好大好舒服视频 | 国产精品77 | 女人裸体又黄 | 少妇视频 | 九草网 | 日韩激情视频在线观看 | 人妻少妇精品一区二区 | aaaaa毛片 | 亚洲色p | 日本黄色xxxxx | 亚洲三区视频 | 无码精品在线观看 | 春草| jizz成熟丰满老女人 | 日韩高清二区 | 日韩欧美亚洲一区 | 亚洲第一国产视频 | 日本中文字幕在线看 | 欧美综合亚洲图片综合区 | 日韩五月天 | 日日干天天操 | 一区二区中文 | 超碰干 | 精品无码三级在线观看视频 | 日本三级黄在线观看 | 午夜资源 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 91资源在线播放 | 成人网在线观看 | 亚洲一区二区三区高清 | 成年人在线观看av | 天天弄天天操 | 日本a√在线观看 | 农村激情伦hxvideos | 日韩在线观看视频一区二区三区 | 国产人人射 | 日韩a级大片 | 日本少妇xxx | 欧美黄页网站 | 国产56页| 中文字幕在线播出 | 国产精品乱码久久久 | 手机av免费观看 | 中国少妇无码专区 | 日本成人中文字幕 | 日韩av看片 | 婷婷色中文网 | jizz国产精品| 免费一二区 | 国产精品免费在线 | 成人欧美一级特黄 | 中文在线日本 | 伦理黄色片 | 久久久久亚洲av成人人电影 | 午夜在线精品偷拍 | 刘玥91精选国产在线观看 | 潮见百合子 | 大尺度做爰床戏呻吟舒畅 | caoporn免费在线 | www99热 | 成人免费视频播放 | xxx综合网| 国产毛片视频 | 国产911 | 少妇被躁爽到高潮无码文 | 美女脱光内衣内裤 | 亚洲嫩草影院 | 一二三区视频 | 人人插人人澡 | 亚洲人女屁股眼交6 | 国产最新自拍视频 | 深夜激情网站 | 日韩国产成人无码av毛片 | 日韩高清一级片 | 日本深夜福利 | 一级做a爰片久久毛片潮喷 天天透天天干 | 五月婷六月 | xxxx日本黄色| 特黄一级视频 | 嫩草视频一区二区三区 | 无码人妻丰满熟妇啪啪欧美 | 中文字幕av网 | 最近最新mv字幕观看 | 最新不卡av | 中文字幕在线视频免费播放 | 亚洲免费综合 | ass亚洲熟妇毛耸耸pics | 91人妻一区二区三区蜜臀 | 成人久久一区二区 | av视觉盛宴 | 欧美日韩在线视频一区二区三区 |