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&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