You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by jeff <jf...@gmail.com> on 2013/04/11 13:11:56 UTC

Log in file

Hey ! 

I think that it is not possible, but is it possible to send log message :

from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");

in a file ? 

Something like :

from("activemq:orders").to("log:com.mycompany.order?level=DEBUG&file=log/${file:name}.log
").to("bean:processOrder");

 

Thanks ! 



--
View this message in context: http://camel.465427.n5.nabble.com/Log-in-file-tp5730713.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Log in file

Posted by Jean Francois LE BESCONT <jf...@gmail.com>.
Thanks very much Raul !


2013/4/12 Raul Kripalani <ra...@evosent.com>

> Hi Jean Francois,
>
> What you need is exactly the SiftAppender, which will log to a different
> file depending on some dynamic parameter in the Mapped Diagnostic Context
> (MDC).
>
> Use this appender from log4j: org.apache.log4j.sift.MDCSiftingAppender.
>
> In the Camel route, write a custom processor that sets an MDC parameter
> named "camel.filename" with the CamelFileName header as the value.
>
> In your log4j configuration, you can then configure your MDCSiftingAppender
> like this:
>
>    log4j.appender.sift.appender.file=log/$\\{camel.filename\\}.log
>
> Here's a blog post showing how SMX achieves per-bundle logging [1], which
> can serve as a reference.
>
> Remember that the MDC context is attached to a thread, so when the thread
> is reused by the Camel File endpont, it'll still have the old MDC context.
> I suggest you do some housekeeping and clean up the MDC property after the
> last log output in the route (by inserting another Processor straight
> after, or using an AsyncCallback like in
> org.apache.camel.impl.MDCUnitOfWork).
>
> Hope this helps.
>
> [1]
>
> http://jason-sherman.blogspot.com.es/2012/06/serivcemix-configuring-sift-appender.html
> .
>
> *Raúl Kripalani*
> Enterprise Architect, Open Source Integration specialist, Program
> Manager | Apache
> Camel Committer
> http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
> http://blog.raulkr.net | twitter: @raulvk
>
> On Fri, Apr 12, 2013 at 1:23 PM, Jean Francois LE BESCONT <
> jflebescont@gmail.com> wrote:
>
> > Thanks for the answer Christian,
> >
> > After re-read my question, I think that I am not enough specific and not
> > explain correctly my point. :)
> >
> > In my case I scan a directory and would like to produce one log ( logEIP
> )
> >  file per file processed.
> >
> > something like :
> >
> > from("file://C:/test)
> >      .log("found ${file:name}")
> >      .process(myprocess1)
> >      .log("end processed1  ${file:name}")
> >      .process(myprocess2)
> >      .log("end processed2  ${file:name}")
> > .end();
> >
> > I have a classical log4j.properties
> >
> > log4j.rootLogger=INFO, A1
> > log4j.appender.A1=org.apache.log4j.FileAppender
> > log4j.appender.A1.File=mylogfile.log
> > log4j.appender.A1.layout=org.apache.log4j.PatternLayout
> > log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS}
> > %-5p [%t] - %m%n
> >
> >
> > Adn I would like to do something like :
> >
> >   props.setProperty("log4j.appender.file.File","<camel current file
> > name>.log");
> >       LogManager.resetConfiguration();
> >       PropertyConfigurator.configure(props);
> >      }
> >
> > But with no specific process, is it possible ?
> >
> > thanks
> >
> >
> >
> >
> >
> >
> >
> > 2013/4/11 Christian Müller <ch...@gmail.com>
> >
> > > You can configure it in your logging framework.
> > >
> > > Sent from a mobile device
> > > Am 11.04.2013 13:12 schrieb "jeff" <jf...@gmail.com>:
> > >
> > > Hey !
> > >
> > > I think that it is not possible, but is it possible to send log
> message :
> > >
> > >
> > >
> >
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");
> > >
> > > in a file ?
> > >
> > > Something like :
> > >
> > >
> > >
> >
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG&file=log/${file:name}.log
> > > ").to("bean:processOrder");
> > >
> > >
> > >
> > > Thanks !
> > >
> > >
> > >
> > > --
> > > View this message in context:
> > > http://camel.465427.n5.nabble.com/Log-in-file-tp5730713.html
> > > Sent from the Camel - Users mailing list archive at Nabble.com.
> > >
> >
>

Re: Log in file

Posted by Raul Kripalani <ra...@evosent.com>.
Hi Jean Francois,

What you need is exactly the SiftAppender, which will log to a different
file depending on some dynamic parameter in the Mapped Diagnostic Context
(MDC).

Use this appender from log4j: org.apache.log4j.sift.MDCSiftingAppender.

In the Camel route, write a custom processor that sets an MDC parameter
named "camel.filename" with the CamelFileName header as the value.

In your log4j configuration, you can then configure your MDCSiftingAppender
like this:

   log4j.appender.sift.appender.file=log/$\\{camel.filename\\}.log

Here's a blog post showing how SMX achieves per-bundle logging [1], which
can serve as a reference.

Remember that the MDC context is attached to a thread, so when the thread
is reused by the Camel File endpont, it'll still have the old MDC context.
I suggest you do some housekeeping and clean up the MDC property after the
last log output in the route (by inserting another Processor straight
after, or using an AsyncCallback like in
org.apache.camel.impl.MDCUnitOfWork).

Hope this helps.

[1]
http://jason-sherman.blogspot.com.es/2012/06/serivcemix-configuring-sift-appender.html
.

*Raúl Kripalani*
Enterprise Architect, Open Source Integration specialist, Program
Manager | Apache
Camel Committer
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk

On Fri, Apr 12, 2013 at 1:23 PM, Jean Francois LE BESCONT <
jflebescont@gmail.com> wrote:

> Thanks for the answer Christian,
>
> After re-read my question, I think that I am not enough specific and not
> explain correctly my point. :)
>
> In my case I scan a directory and would like to produce one log ( logEIP )
>  file per file processed.
>
> something like :
>
> from("file://C:/test)
>      .log("found ${file:name}")
>      .process(myprocess1)
>      .log("end processed1  ${file:name}")
>      .process(myprocess2)
>      .log("end processed2  ${file:name}")
> .end();
>
> I have a classical log4j.properties
>
> log4j.rootLogger=INFO, A1
> log4j.appender.A1=org.apache.log4j.FileAppender
> log4j.appender.A1.File=mylogfile.log
> log4j.appender.A1.layout=org.apache.log4j.PatternLayout
> log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS}
> %-5p [%t] - %m%n
>
>
> Adn I would like to do something like :
>
>   props.setProperty("log4j.appender.file.File","<camel current file
> name>.log");
>       LogManager.resetConfiguration();
>       PropertyConfigurator.configure(props);
>      }
>
> But with no specific process, is it possible ?
>
> thanks
>
>
>
>
>
>
>
> 2013/4/11 Christian Müller <ch...@gmail.com>
>
> > You can configure it in your logging framework.
> >
> > Sent from a mobile device
> > Am 11.04.2013 13:12 schrieb "jeff" <jf...@gmail.com>:
> >
> > Hey !
> >
> > I think that it is not possible, but is it possible to send log message :
> >
> >
> >
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");
> >
> > in a file ?
> >
> > Something like :
> >
> >
> >
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG&file=log/${file:name}.log
> > ").to("bean:processOrder");
> >
> >
> >
> > Thanks !
> >
> >
> >
> > --
> > View this message in context:
> > http://camel.465427.n5.nabble.com/Log-in-file-tp5730713.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
> >
>

Re: Log in file

Posted by Jean Francois LE BESCONT <jf...@gmail.com>.
Thanks for the answer Christian,

After re-read my question, I think that I am not enough specific and not
explain correctly my point. :)

In my case I scan a directory and would like to produce one log ( logEIP )
 file per file processed.

something like :

from("file://C:/test)
     .log("found ${file:name}")
     .process(myprocess1)
     .log("end processed1  ${file:name}")
     .process(myprocess2)
     .log("end processed2  ${file:name}")
.end();

I have a classical log4j.properties

log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=mylogfile.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS}
%-5p [%t] - %m%n


Adn I would like to do something like :

  props.setProperty("log4j.appender.file.File","<camel current file name>.log");
      LogManager.resetConfiguration();
      PropertyConfigurator.configure(props);
     }

But with no specific process, is it possible ?

thanks







2013/4/11 Christian Müller <ch...@gmail.com>

> You can configure it in your logging framework.
>
> Sent from a mobile device
> Am 11.04.2013 13:12 schrieb "jeff" <jf...@gmail.com>:
>
> Hey !
>
> I think that it is not possible, but is it possible to send log message :
>
>
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");
>
> in a file ?
>
> Something like :
>
>
> from("activemq:orders").to("log:com.mycompany.order?level=DEBUG&file=log/${file:name}.log
> ").to("bean:processOrder");
>
>
>
> Thanks !
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Log-in-file-tp5730713.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Log in file

Posted by Christian Müller <ch...@gmail.com>.
You can configure it in your logging framework.

Sent from a mobile device
Am 11.04.2013 13:12 schrieb "jeff" <jf...@gmail.com>:

Hey !

I think that it is not possible, but is it possible to send log message :

from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");

in a file ?

Something like :

from("activemq:orders").to("log:com.mycompany.order?level=DEBUG&file=log/${file:name}.log
").to("bean:processOrder");



Thanks !



--
View this message in context:
http://camel.465427.n5.nabble.com/Log-in-file-tp5730713.html
Sent from the Camel - Users mailing list archive at Nabble.com.