30.10. 로깅 출력의 전체 사용자 정의
섹션에 설명된 옵션을 사용하면 로거 출력의 많은 부분을 제어할 수 있습니다. 그러나 로그 행은 항상 다음 구조를 따릅니다.
Exchange[Id:ID-machine-local-50656-1234567901234-1-2, ExchangePattern:InOut,
Properties:{CamelToEndpoint=log://org.apache.camel.component.log.TEST?showAll=true,
CamelCreatedTimestamp=Thu Mar 28 00:00:00 WET 2013},
Headers:{breadcrumbId=ID-machine-local-50656-1234567901234-1-1}, BodyType:String, Body:Hello World, Out: null]
경우에 따라 이 형식이 적합하지 않을 수 있습니다.
- 표시되는 헤더와 속성을 필터링하여 통찰력과 상세 정보 표시 사이의 균형을 유지합니다.
- 로그 메시지를 가장 읽을 수 있는 것으로 조정하십시오.
- 로그 광업 시스템(예: Splunk)별 다이제스트에 대한 로그 메시지를 사용자 정의합니다.
- 특정 본문 유형을 다르게 인쇄합니다.
절대 사용자 정의가 필요할 때마다 인터페이스를 구현하는 클래스를 만들 수 있습니다. format(Exchange) 메서드에서 전체 교환에 액세스할 수 있으므로 필요한 정확한 정보를 선택하고 추출하고 사용자 지정 방식으로 포맷한 후 이를 반환할 수 있습니다. 반환 값은 최종 로그 메시지가 됩니다.
Log 구성 요소는 다음 두 가지 방법 중 하나로 사용자 지정 ExchangeFormatter 를 선택하도록 할 수 있습니다.
레지스트리에서 LogComponent를 명시적으로 인스턴스화합니다.
<bean name="log" class="org.apache.camel.component.log.LogComponent">
<property name="exchangeFormatter" ref="myCustomFormatter" />
</bean>
30.10.1. 구성을 통한 ovs over configuration 링크 복사링크가 클립보드에 복사되었습니다!
단순히 logFormatter 라는 이름으로 빈을 등록하면 됩니다. Log Component는 자동으로 선택할 수 있을 만큼 지능적입니다.
<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" />
ExchangeFormatter 는 해당 Camel 컨텍스트 내의 모든 로그 끝점에 적용됩니다. 다양한 엔드포인트에 서로 다른 ExchangeFormatter가 필요한 경우 LogComponent를 필요한 만큼 인스턴스화하고 관련 빈 이름을 끝점 접두사로 사용합니다.
사용자 지정 로그 포멧터를 사용하는 경우 사용자 정의 로그 포맷터에 구성된 로그 uri에서 매개변수를 지정할 수 있습니다. "logFormatter"를type scoped로 정의해야 하지만 다른 매개변수(예:)가 있는 경우 공유되지 않도록 합니다.
<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" scope="prototype"/>
그러면 다양한 옵션이 있는 로그 배를 사용하여 Camel 경로를 지정할 수 있습니다.
<to uri="log:foo?param1=foo&param2=100"/>
<to uri="log:bar?param1=bar&param2=200"/>