Hi Claus,

Thank you very much for the quick response. I assumed that one could use the 
dead letter channel as a workaround, but logically I thought it should be 
possible simply to set the logName or the loggerRef on the DefaultErrorHandler 
like it was the case with the LoggerErrorHandler.
Hence my question. Could that be readed as a feature in the future? The dead 
letter channel solves my issue for now. Thanks again.

Regards,
Erne

-----Original Message-----
From: Claus Ibsen [mailto:claus.ib...@gmail.com] 
Sent: Friday, November 25, 2022 2:31 PM
To: users@camel.apache.org
Subject: Re: DefaultErrorHandler not logging to specific log file

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.ErrorLoggingTes
> tServiceError.ref
> = ErrorLoggingTestServiceError
> log4j2.appender.ErrorLoggingTestServiceError.name = 
> ErrorLoggingTestServiceError 
> log4j2.appender.ErrorLoggingTestServiceError.type = RollingFile 
> log4j2.appender.ErrorLoggingTestServiceError.fileName = 
> ${custom.logs.path}/ErrorLoggingTestService/ErrorLoggingTestService-Er
> ror.log log4j2.appender.ErrorLoggingTestServiceError.filePattern = 
> ${custom.logs.path}/ErrorLoggingTestService/ErrorLoggingTestService-Er
> ror.%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

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

Reply via email to