Hi

Use, dead letter channel to send the message to a log endpoint of your
choice, such as log:error.
That is essentially what the log error handler did.
https://camel.apache.org/manual/error-handler.html


On Fri, Nov 25, 2022 at 2:01 PM Tasi, Erne <e.t...@cenit.com.invalid> wrote:

> Hello All,
>
> We are using Camel in Karaf and recently we upgraded Karaf to version
> 4.2.1 and camel to 3.18.3. I am not sure if it is a bug or if I am doing
> something wrong, but it seems as if when I want to use the
> DefaultErrorHandler to log errors to a specific log file it doesn't work
> anymore. In previous versions we used the LoggerErrorHandler for this but
> apparently it has been removed therefore the DefaultErrorHandler would be
> the right candidate for the replacement.
>
> I have a logger configured in org.ops4j.pax.logging.cfg file like so:
> log4j2.logger.ErrorLoggingTestServiceError.name =
> ErrorLoggingTestServiceErrorLogger
> log4j2.logger.ErrorLoggingTestServiceError.level = ERROR
> log4j2.logger.ErrorLoggingTestServiceError.appenderRef.ErrorLoggingTestServiceError.ref
> = ErrorLoggingTestServiceError
> log4j2.appender.ErrorLoggingTestServiceError.name =
> ErrorLoggingTestServiceError
> log4j2.appender.ErrorLoggingTestServiceError.type = RollingFile
> log4j2.appender.ErrorLoggingTestServiceError.fileName =
> ${custom.logs.path}/ErrorLoggingTestService/ErrorLoggingTestService-Error.log
> log4j2.appender.ErrorLoggingTestServiceError.filePattern =
> ${custom.logs.path}/ErrorLoggingTestService/ErrorLoggingTestService-Error.%i.log.gz
> log4j2.appender.ErrorLoggingTestServiceError.immediateFlush = true
> log4j2.appender.ErrorLoggingTestServiceError.append = true
> log4j2.appender.ErrorLoggingTestServiceError.layout.type = PatternLayout
> log4j2.appender.ErrorLoggingTestServiceError.layout.pattern =
> ${log4j2.patternCamel}
> log4j2.appender.ErrorLoggingTestServiceError.policies.type = Policies
> log4j2.appender.ErrorLoggingTestServiceError.policies.size.type =
> SizeBasedTriggeringPolicy
> log4j2.appender.ErrorLoggingTestServiceError.policies.size.size = 50MB
>
> The ErrorLoggingTestService looks like this:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>   xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>                         http://camel.apache.org/schema/blueprint
> http://camel.apache.org/schema/blueprint/camel-blueprint-3.18.3.xsd";>
>
>   <import resource="file:${karaf.etc}/services/service-base.xml"/>
>
>   <bean id="demoIllegalStateException"
> class="java.lang.IllegalStateException">
>     <argument index="0" value="Forced Exception" type="java.lang.String"/>
>   </bean>
>
>   <bean id="defaultErrorLogger" class="org.slf4j.LoggerFactory"
> factory-method="getLogger">
>     <argument value="ErrorLoggingTestServiceErrorLogger"/>
>   </bean>
>
>   <camelContext id="ErrorLoggingTestService" useMDCLogging="true"
> errorHandlerRef="defaultEH"
>     xmlns="http://camel.apache.org/schema/blueprint";>
>
>     <errorHandler id="defaultEH"
> logName="ErrorLoggingTestServiceErrorLogger" level="ERROR"/>
>     <!--    <onException>-->
>     <!--      <exception>java.lang.Exception</exception>-->
>     <!--      <handled>-->
>     <!--        <constant>true</constant>-->
>     <!--      </handled>-->
>     <!--      <log logger="defaultErrorLogger" loggingLevel="ERROR"-->
>     <!--        message="Logging to explicit logger"/>-->
>     <!--    </onException>-->
>
>     <route id="main-route">
>       <from uri="timer://runOnce?repeatCount=1&amp;delay=1000"/>
>
>       <log message="Test 2" loggingLevel="ERROR"/>
>
>       <setBody>
>         <constant>Log-Message from Camel Context.</constant>
>       </setBody>
>
>       <to uri="log:ErrorLoggingTestService?level=ERROR"/>
>
>       <throwException ref="demoIllegalStateException"/>
>     </route>
>
>   </camelContext>
> </blueprint>
>
> Now when the onException is not commented out and the defaultErrorLogger
> bean is used the log is written so the logger configuration should be ok,
> however the defaultEH error handler does not write into the log file. I
> have tried to set the log name in different ways even as a bean with the
> DefaultErrorHandlerBuilder class to no avail. The error log is created, but
> no logs are written to it. Does anyone have an idea where the problem is in
> my code or at least a working example where the ERROR logs would be written
> in a separate log file.
>
> Best Regards,
> Erne
>
>
>
> CENIT AG, Industriestrasse 52-54, 70565 Stuttgart, Tel.: +49 711 7825-30,
> Fax: +49 711 7825-4000, Internet: www.cenit.com
> Geschaeftsstellen (Branch Offices): Berlin, Frankfurt, Hamburg, Hannover,
> Muenchen, Oelsnitz, Ratingen, Saarbruecken
> Vorstandsmitglieder (Members of the Board): Peter Schneck, Axelle Maze
> Aufsichtsratsmitglieder (Supervisory Board Members): Rainer Koppitz
> (Vorsitzender des Aufsichtsrats / Chairman of the Supervisory Board), Prof.
> Dr. Isabell Welpe, Ricardo Malta
> Bankverbindungen (Bank Accounts):
> Deutsche Bank (BLZ 600 700 70) Kto. 1661 040 IBAN : DE85 6007 0070 0166
> 1040 00 SWIFT-CODE : DEUTDESS,
> Commerzbank (BLZ 600 400 71) Kto. 532 015 500 IBAN : DE83 6004 0071 0532
> 0155 00 SWIFT-Code : COBADEFF600,
> Registergericht (Registry court): Amtsgericht Stuttgart
> Handelsregister (Commercial Register): HRB Nr. 19117
> Umsatzsteuer (VAT) ID: DE 147 862 777
>


-- 
Claus Ibsen
-----------------
@davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to