You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Debraj Manna <su...@gmail.com> on 2016/06/30 06:23:13 UTC

Different log level for different Karaf Bundles

In Karaf 3.0.5 running under Servicemix 6.1.0 my
org.ops4j.pax.logging.cfg looks
like below:-

# Root logger
log4j.rootLogger=DEBUG, async, osgi:*
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

# To avoid flooding the log when using DEBUG level on an ssh
connection and doing log:tail
log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO

# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
%-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} -
%X{bundle.version} | %X | %m%n

# File appender
log4j.appender.out=org.apache.log4j.RollingFileAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
%-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} -
%X{bundle.version} | %X | %m%n
log4j.appender.out.file=/tmp/servicemix.log
log4j.appender.out.append=true
log4j.appender.out.maxFileSize=1024MB
log4j.appender.out.maxBackupIndex=10

# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=bundle.name
log4j.appender.sift.default=servicemix
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
%-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
log4j.appender.sift.appender.file=/tmp/$\\{bundle.name\\}.log
log4j.appender.sift.appender.append=true

# Async appender
log4j.appender.async=org.apache.log4j.AsyncAppender
log4j.appender.async.appenders=out

Now this logger config is dumping Karaf's debug log as well whereas my
intention is to DEBUG only a specific bundle.

Can some one let me know if it is possible to set different log levels
for different bundles?

Re: Different log level for different Karaf Bundles

Posted by Debraj Manna <su...@gmail.com>.
My bundles were using different loggers. So created a logger category in
the pax-logging as mentioned by JB.

Bengt's solution also looks interesting I will give it a try.

On Thu, Jun 30, 2016 at 6:18 PM, Jean-Baptiste Onofré <jb...@nanthrax.net>
wrote:

> Yes, it's what I said: create new sift appender.
>
> Regards
> JB
>
> On 06/30/2016 02:33 PM, Bengt Rodehav wrote:
>
>> You can do this by using MDC combined with filters (I implemented that
>> in Pax logging a few years back).
>>
>> E g if you use this root logger:
>>
>> log4j.rootLogger=INFO, stdout, info, error, bundle, context, osgi:*
>>
>> And you define the "bundle" log as follows:
>>
>> log4j.appender.bundle=org.apache.log4j.sift.MDCSiftingAppender
>> log4j.appender.bundle.key=bundle.name <http://bundle.name>
>> log4j.appender.bundle.default=karaf
>> log4j.appender.bundle.appender=org.apache.log4j.RollingFileAppender
>> log4j.appender.bundle.appender.MaxFileSize=1MB
>> log4j.appender.bundle.appender.MaxBackupIndex=2
>> log4j.appender.bundle.appender.layout=org.apache.log4j.PatternLayout
>> log4j.appender.bundle.appender.layout.ConversionPattern=%d{ISO8601} |
>> %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
>> log4j.appender.bundle.appender.file=${logdir}/bundles/$\\{bundle.name
>> <http://bundle.name>\\}.log
>> log4j.appender.bundle.appender.append=true
>> log4j.appender.bundle.threshold=INFO
>>
>> You will end up with a separate log file per bundle (named with the
>> bundle's name). I use a custom variable (${logdir}) to specify where to
>> create the log file but you can do as you wish. In this case these log
>> files will be at INFO level.
>>
>> Sometimes I want TRACE logging on a specific bundle. I can then do as
>> follows:
>>
>> log4j.rootLogger=TRACE, stdout, info, error, bundle, context, osgi:*,
>> bundle_trace
>>
>> log4j.appender.bundle_trace=org.apache.log4j.sift.MDCSiftingAppender
>> log4j.appender.bundle_trace.key=bundle.name <http://bundle.name>
>> log4j.appender.bundle_trace.default=karaf
>> log4j.appender.bundle_trace.appender=org.apache.log4j.RollingFileAppender
>> log4j.appender.bundle_trace.appender.MaxFileSize=10MB
>> log4j.appender.bundle_trace.appender.MaxBackupIndex=2
>> log4j.appender.bundle_trace.appender.layout=org.apache.log4j.PatternLayout
>> log4j.appender.bundle_trace.appender.layout.ConversionPattern=%d{ISO8601}
>> |
>> %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
>> log4j.appender.bundle_trace.appender.file=${logdir}/bundles/trace/$\\{
>> bundle.name
>> <http://bundle.name>\\}.log
>> log4j.appender.bundle_trace.appender.append=true
>> log4j.appender.bundle_trace.threshold=TRACE
>>
>> log4j.appender.bundle_trace.filter.a=org.apache.log4j.filter.MDCMatchFilter
>> log4j.appender.bundle_trace.filter.a.exactMatch=false
>> log4j.appender.bundle_trace.filter.a.keyToMatch=bundle.name
>> <http://bundle.name>
>>
>> log4j.appender.bundle_trace.filter.a.valueToMatch=org.apache.aries.blueprint.core
>> # DenyAllFilter should always be the last filter
>> log4j.appender.bundle_trace.filter.z=org.apache.log4j.varia.DenyAllFilter
>>
>> In the above example I create a separate TRACE log for the bundle with
>> the name "org.apache.aries.blueprint.core".
>>
>> It is also possible to configure custom logging for a particular camel
>> context which we do in our integration platform based on Karaf and Camel.
>>
>> /Bengt
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2016-06-30 13:59 GMT+02:00 Jean-Baptiste Onofré <jb@nanthrax.net
>> <ma...@nanthrax.net>>:
>>
>>     Then it's different sift appenders that you have to define.
>>
>>     Generally speaking, you don't need sift for what you want: if your
>>     bundles use different loggers, then, just create the logger category
>>     in the pax-logging config.
>>
>>     Regards
>>     JB
>>
>>     On 06/30/2016 01:56 PM, Debraj Manna wrote:
>>
>>
>>         Yeah if I enable sifting appender let's say with a config  and
>>         add it to
>>         rootLogger
>>
>>         log4j.appender.sift.threshold=DEBUG
>>
>>
>>         Then this will make log level DEBUGfor all bundles. I am trying
>>         to ask
>>         is let's say I have two bundles1& bundles2and I want bundle1 's
>> log
>>         level to be DEBUGand bundle2log level to be ERROR.
>>
>>
>>         On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofré
>>         <jb@nanthrax.net <ma...@nanthrax.net>
>>         <mailto:jb@nanthrax.net <ma...@nanthrax.net>>> wrote:
>>
>>              Hi,
>>
>>              I don't see the sift appender enable for the root logger.
>>
>>              You should have:
>>
>>              log4j.rootLogger=DEBUG, async, sift, osgi:*
>>
>>              Regards
>>              JB
>>
>>              On 06/30/2016 08:23 AM, Debraj Manna wrote:
>>
>>                  In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>>                  |org.ops4j.pax.logging.cfg| looks like below:-
>>
>>                  |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>>
>>         log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer #
>> To
>>                  avoid flooding the log when using DEBUG level on an ssh
>>                  connection and
>>                  doing log:tail
>>
>>         log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO
>> #
>>                  CONSOLE appender not used by default
>>                  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>>
>>  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>>
>>         log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} |
>>                  %-5.5p |
>>                  %-16.16t | %-32.32c{1} | %X{bundle.id
>>         <http://bundle.id> <http://bundle.id>
>>                  <http://bundle.id>} -
>>                  %X{bundle.name <http://bundle.name>
>>         <http://bundle.name> <http://bundle.name>} -
>>                  %X{bundle.version} | %X | %m%n #
>>                  File appender
>>                  log4j.appender.out=org.apache.log4j.RollingFileAppender
>>                  log4j.appender.out.layout=org.apache.log4j.PatternLayout
>>                  log4j.appender.out.layout.ConversionPattern=%d{ISO8601}
>>         | %-5.5p |
>>                  %-16.16t | %-32.32c{1} | %X{bundle.id
>>         <http://bundle.id> <http://bundle.id>
>>                  <http://bundle.id>} -
>>                  %X{bundle.name <http://bundle.name>
>>         <http://bundle.name> <http://bundle.name>} -
>>
>>                  %X{bundle.version} | %X | %m%n
>>                  log4j.appender.out.file=/tmp/servicemix.log
>>                  log4j.appender.out.append=true
>>         log4j.appender.out.maxFileSize=1024MB
>>                  log4j.appender.out.maxBackupIndex=10 # Sift appender
>>
>>         log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>>                  log4j.appender.sift.key=bundle.name
>>         <http://bundle.name> <http://bundle.name>
>>                  <http://bundle.name>
>>                  log4j.appender.sift.default=servicemix
>>
>>  log4j.appender.sift.appender=org.apache.log4j.FileAppender
>>
>>         log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>>
>>         log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601}
>> |
>>                  %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>>                  log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>>         <http://bundle.name>
>>                  <http://bundle.name>
>>                  <http://bundle.name>\\}.log
>>                  log4j.appender.sift.appender.append=true #
>>                  Async appender
>>         log4j.appender.async=org.apache.log4j.AsyncAppender
>>                  log4j.appender.async.appenders=out|
>>
>>                  |
>>
>>                  Now this logger config is dumping Karaf's debug log as
>> well
>>                  whereas my
>>                  intention is to |DEBUG| only a specific bundle.
>>
>>                  Can some one let me know if it is possible to set
>>         different log
>>                  levels
>>                  for different bundles?
>>
>>                  |
>>
>>                  |
>>                  |
>>
>>
>>              --
>>              Jean-Baptiste Onofré
>>         jbonofre@apache.org <ma...@apache.org>
>>         <mailto:jbonofre@apache.org <ma...@apache.org>>
>>         http://blog.nanthrax.net
>>              Talend - http://www.talend.com
>>
>>
>>
>>     --
>>     Jean-Baptiste Onofré
>>     jbonofre@apache.org <ma...@apache.org>
>>     http://blog.nanthrax.net
>>     Talend - http://www.talend.com
>>
>>
>>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Re: Different log level for different Karaf Bundles

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Yes, it's what I said: create new sift appender.

Regards
JB

On 06/30/2016 02:33 PM, Bengt Rodehav wrote:
> You can do this by using MDC combined with filters (I implemented that
> in Pax logging a few years back).
>
> E g if you use this root logger:
>
> log4j.rootLogger=INFO, stdout, info, error, bundle, context, osgi:*
>
> And you define the "bundle" log as follows:
>
> log4j.appender.bundle=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.bundle.key=bundle.name <http://bundle.name>
> log4j.appender.bundle.default=karaf
> log4j.appender.bundle.appender=org.apache.log4j.RollingFileAppender
> log4j.appender.bundle.appender.MaxFileSize=1MB
> log4j.appender.bundle.appender.MaxBackupIndex=2
> log4j.appender.bundle.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.bundle.appender.layout.ConversionPattern=%d{ISO8601} |
> %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
> log4j.appender.bundle.appender.file=${logdir}/bundles/$\\{bundle.name
> <http://bundle.name>\\}.log
> log4j.appender.bundle.appender.append=true
> log4j.appender.bundle.threshold=INFO
>
> You will end up with a separate log file per bundle (named with the
> bundle's name). I use a custom variable (${logdir}) to specify where to
> create the log file but you can do as you wish. In this case these log
> files will be at INFO level.
>
> Sometimes I want TRACE logging on a specific bundle. I can then do as
> follows:
>
> log4j.rootLogger=TRACE, stdout, info, error, bundle, context, osgi:*,
> bundle_trace
>
> log4j.appender.bundle_trace=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.bundle_trace.key=bundle.name <http://bundle.name>
> log4j.appender.bundle_trace.default=karaf
> log4j.appender.bundle_trace.appender=org.apache.log4j.RollingFileAppender
> log4j.appender.bundle_trace.appender.MaxFileSize=10MB
> log4j.appender.bundle_trace.appender.MaxBackupIndex=2
> log4j.appender.bundle_trace.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.bundle_trace.appender.layout.ConversionPattern=%d{ISO8601} |
> %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
> log4j.appender.bundle_trace.appender.file=${logdir}/bundles/trace/$\\{bundle.name
> <http://bundle.name>\\}.log
> log4j.appender.bundle_trace.appender.append=true
> log4j.appender.bundle_trace.threshold=TRACE
> log4j.appender.bundle_trace.filter.a=org.apache.log4j.filter.MDCMatchFilter
> log4j.appender.bundle_trace.filter.a.exactMatch=false
> log4j.appender.bundle_trace.filter.a.keyToMatch=bundle.name
> <http://bundle.name>
> log4j.appender.bundle_trace.filter.a.valueToMatch=org.apache.aries.blueprint.core
> # DenyAllFilter should always be the last filter
> log4j.appender.bundle_trace.filter.z=org.apache.log4j.varia.DenyAllFilter
>
> In the above example I create a separate TRACE log for the bundle with
> the name "org.apache.aries.blueprint.core".
>
> It is also possible to configure custom logging for a particular camel
> context which we do in our integration platform based on Karaf and Camel.
>
> /Bengt
>
>
>
>
>
>
>
>
>
>
> 2016-06-30 13:59 GMT+02:00 Jean-Baptiste Onofr� <jb@nanthrax.net
> <ma...@nanthrax.net>>:
>
>     Then it's different sift appenders that you have to define.
>
>     Generally speaking, you don't need sift for what you want: if your
>     bundles use different loggers, then, just create the logger category
>     in the pax-logging config.
>
>     Regards
>     JB
>
>     On 06/30/2016 01:56 PM, Debraj Manna wrote:
>
>
>         Yeah if I enable sifting appender let's say with a config  and
>         add it to
>         rootLogger
>
>         log4j.appender.sift.threshold=DEBUG
>
>
>         Then this will make log level DEBUGfor all bundles. I am trying
>         to ask
>         is let's say I have two bundles1& bundles2and I want bundle1 's log
>         level to be DEBUGand bundle2log level to be ERROR.
>
>
>         On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofr�
>         <jb@nanthrax.net <ma...@nanthrax.net>
>         <mailto:jb@nanthrax.net <ma...@nanthrax.net>>> wrote:
>
>              Hi,
>
>              I don't see the sift appender enable for the root logger.
>
>              You should have:
>
>              log4j.rootLogger=DEBUG, async, sift, osgi:*
>
>              Regards
>              JB
>
>              On 06/30/2016 08:23 AM, Debraj Manna wrote:
>
>                  In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>                  |org.ops4j.pax.logging.cfg| looks like below:-
>
>                  |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>
>         log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer # To
>                  avoid flooding the log when using DEBUG level on an ssh
>                  connection and
>                  doing log:tail
>
>         log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO #
>                  CONSOLE appender not used by default
>                  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>                  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>
>         log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} |
>                  %-5.5p |
>                  %-16.16t | %-32.32c{1} | %X{bundle.id
>         <http://bundle.id> <http://bundle.id>
>                  <http://bundle.id>} -
>                  %X{bundle.name <http://bundle.name>
>         <http://bundle.name> <http://bundle.name>} -
>                  %X{bundle.version} | %X | %m%n #
>                  File appender
>                  log4j.appender.out=org.apache.log4j.RollingFileAppender
>                  log4j.appender.out.layout=org.apache.log4j.PatternLayout
>                  log4j.appender.out.layout.ConversionPattern=%d{ISO8601}
>         | %-5.5p |
>                  %-16.16t | %-32.32c{1} | %X{bundle.id
>         <http://bundle.id> <http://bundle.id>
>                  <http://bundle.id>} -
>                  %X{bundle.name <http://bundle.name>
>         <http://bundle.name> <http://bundle.name>} -
>
>                  %X{bundle.version} | %X | %m%n
>                  log4j.appender.out.file=/tmp/servicemix.log
>                  log4j.appender.out.append=true
>         log4j.appender.out.maxFileSize=1024MB
>                  log4j.appender.out.maxBackupIndex=10 # Sift appender
>
>         log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>                  log4j.appender.sift.key=bundle.name
>         <http://bundle.name> <http://bundle.name>
>                  <http://bundle.name>
>                  log4j.appender.sift.default=servicemix
>                  log4j.appender.sift.appender=org.apache.log4j.FileAppender
>
>         log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>
>         log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
>                  %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>                  log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>         <http://bundle.name>
>                  <http://bundle.name>
>                  <http://bundle.name>\\}.log
>                  log4j.appender.sift.appender.append=true #
>                  Async appender
>         log4j.appender.async=org.apache.log4j.AsyncAppender
>                  log4j.appender.async.appenders=out|
>
>                  |
>
>                  Now this logger config is dumping Karaf's debug log as well
>                  whereas my
>                  intention is to |DEBUG| only a specific bundle.
>
>                  Can some one let me know if it is possible to set
>         different log
>                  levels
>                  for different bundles?
>
>                  |
>
>                  |
>                  |
>
>
>              --
>              Jean-Baptiste Onofr�
>         jbonofre@apache.org <ma...@apache.org>
>         <mailto:jbonofre@apache.org <ma...@apache.org>>
>         http://blog.nanthrax.net
>              Talend - http://www.talend.com
>
>
>
>     --
>     Jean-Baptiste Onofr�
>     jbonofre@apache.org <ma...@apache.org>
>     http://blog.nanthrax.net
>     Talend - http://www.talend.com
>
>

-- 
Jean-Baptiste Onofr�
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: Different log level for different Karaf Bundles

Posted by James Carman <ja...@carmanconsulting.com>.
Are you perhaps looking for the "additivity" flag?

https://logging.apache.org/log4j/1.2/manual.html

On Thu, Jun 30, 2016 at 8:33 AM Bengt Rodehav <be...@rodehav.com> wrote:

> You can do this by using MDC combined with filters (I implemented that in
> Pax logging a few years back).
>
> E g if you use this root logger:
>
> log4j.rootLogger=INFO, stdout, info, error, bundle, context, osgi:*
>
> And you define the "bundle" log as follows:
>
> log4j.appender.bundle=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.bundle.key=bundle.name
> log4j.appender.bundle.default=karaf
> log4j.appender.bundle.appender=org.apache.log4j.RollingFileAppender
> log4j.appender.bundle.appender.MaxFileSize=1MB
> log4j.appender.bundle.appender.MaxBackupIndex=2
> log4j.appender.bundle.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.bundle.appender.layout.ConversionPattern=%d{ISO8601} |
> %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
> log4j.appender.bundle.appender.file=${logdir}/bundles/$\\{bundle.name
> \\}.log
> log4j.appender.bundle.appender.append=true
> log4j.appender.bundle.threshold=INFO
>
> You will end up with a separate log file per bundle (named with the
> bundle's name). I use a custom variable (${logdir}) to specify where to
> create the log file but you can do as you wish. In this case these log
> files will be at INFO level.
>
> Sometimes I want TRACE logging on a specific bundle. I can then do as
> follows:
>
> log4j.rootLogger=TRACE, stdout, info, error, bundle, context, osgi:*,
> bundle_trace
>
> log4j.appender.bundle_trace=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.bundle_trace.key=bundle.name
> log4j.appender.bundle_trace.default=karaf
> log4j.appender.bundle_trace.appender=org.apache.log4j.RollingFileAppender
> log4j.appender.bundle_trace.appender.MaxFileSize=10MB
> log4j.appender.bundle_trace.appender.MaxBackupIndex=2
> log4j.appender.bundle_trace.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.bundle_trace.appender.layout.ConversionPattern=%d{ISO8601}
> | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
> log4j.appender.bundle_trace.appender.file=${logdir}/bundles/trace/$\\{
> bundle.name\\}.log
> log4j.appender.bundle_trace.appender.append=true
> log4j.appender.bundle_trace.threshold=TRACE
> log4j.appender.bundle_trace.filter.a=org.apache.log4j.filter.MDCMatchFilter
> log4j.appender.bundle_trace.filter.a.exactMatch=false
> log4j.appender.bundle_trace.filter.a.keyToMatch=bundle.name
>
> log4j.appender.bundle_trace.filter.a.valueToMatch=org.apache.aries.blueprint.core
> # DenyAllFilter should always be the last filter
> log4j.appender.bundle_trace.filter.z=org.apache.log4j.varia.DenyAllFilter
>
> In the above example I create a separate TRACE log for the bundle with the
> name "org.apache.aries.blueprint.core".
>
> It is also possible to configure custom logging for a particular camel
> context which we do in our integration platform based on Karaf and Camel.
>
> /Bengt
>
>
>
>
>
>
>
>
>
>
> 2016-06-30 13:59 GMT+02:00 Jean-Baptiste Onofré <jb...@nanthrax.net>:
>
>> Then it's different sift appenders that you have to define.
>>
>> Generally speaking, you don't need sift for what you want: if your
>> bundles use different loggers, then, just create the logger category in the
>> pax-logging config.
>>
>> Regards
>> JB
>>
>> On 06/30/2016 01:56 PM, Debraj Manna wrote:
>>
>>>
>>> Yeah if I enable sifting appender let's say with a config  and add it to
>>> rootLogger
>>>
>>> log4j.appender.sift.threshold=DEBUG
>>>
>>>
>>> Then this will make log level DEBUGfor all bundles. I am trying to ask
>>> is let's say I have two bundles1& bundles2and I want bundle1 's log
>>> level to be DEBUGand bundle2log level to be ERROR.
>>>
>>>
>>> On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofré <jb@nanthrax.net
>>> <ma...@nanthrax.net>> wrote:
>>>
>>>     Hi,
>>>
>>>     I don't see the sift appender enable for the root logger.
>>>
>>>     You should have:
>>>
>>>     log4j.rootLogger=DEBUG, async, sift, osgi:*
>>>
>>>     Regards
>>>     JB
>>>
>>>     On 06/30/2016 08:23 AM, Debraj Manna wrote:
>>>
>>>         In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>>>         |org.ops4j.pax.logging.cfg| looks like below:-
>>>
>>>         |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>>>         log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer #
>>> To
>>>         avoid flooding the log when using DEBUG level on an ssh
>>>         connection and
>>>         doing log:tail
>>>         log4j.logger.org.apache.sshd.server.channel.ChannelSession =
>>> INFO #
>>>         CONSOLE appender not used by default
>>>         log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>>>         log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>>>         log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} |
>>>         %-5.5p |
>>>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>>>         <http://bundle.id>} -
>>>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>>>         %X{bundle.version} | %X | %m%n #
>>>         File appender
>>>         log4j.appender.out=org.apache.log4j.RollingFileAppender
>>>         log4j.appender.out.layout=org.apache.log4j.PatternLayout
>>>         log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p
>>> |
>>>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>>>         <http://bundle.id>} -
>>>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>>>
>>>         %X{bundle.version} | %X | %m%n
>>>         log4j.appender.out.file=/tmp/servicemix.log
>>>         log4j.appender.out.append=true
>>> log4j.appender.out.maxFileSize=1024MB
>>>         log4j.appender.out.maxBackupIndex=10 # Sift appender
>>>         log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>>>         log4j.appender.sift.key=bundle.name <http://bundle.name>
>>>         <http://bundle.name>
>>>         log4j.appender.sift.default=servicemix
>>>         log4j.appender.sift.appender=org.apache.log4j.FileAppender
>>>
>>> log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>>>
>>> log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
>>>         %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>>>         log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>>>         <http://bundle.name>
>>>         <http://bundle.name>\\}.log
>>>         log4j.appender.sift.appender.append=true #
>>>         Async appender
>>> log4j.appender.async=org.apache.log4j.AsyncAppender
>>>         log4j.appender.async.appenders=out|
>>>
>>>         |
>>>
>>>         Now this logger config is dumping Karaf's debug log as well
>>>         whereas my
>>>         intention is to |DEBUG| only a specific bundle.
>>>
>>>         Can some one let me know if it is possible to set different log
>>>         levels
>>>         for different bundles?
>>>
>>>         |
>>>
>>>         |
>>>         |
>>>
>>>
>>>     --
>>>     Jean-Baptiste Onofré
>>>     jbonofre@apache.org <ma...@apache.org>
>>>     http://blog.nanthrax.net
>>>     Talend - http://www.talend.com
>>>
>>>
>>>
>> --
>> Jean-Baptiste Onofré
>> jbonofre@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>
>

Re: Different log level for different Karaf Bundles

Posted by Bengt Rodehav <be...@rodehav.com>.
You can do this by using MDC combined with filters (I implemented that in
Pax logging a few years back).

E g if you use this root logger:

log4j.rootLogger=INFO, stdout, info, error, bundle, context, osgi:*

And you define the "bundle" log as follows:

log4j.appender.bundle=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.bundle.key=bundle.name
log4j.appender.bundle.default=karaf
log4j.appender.bundle.appender=org.apache.log4j.RollingFileAppender
log4j.appender.bundle.appender.MaxFileSize=1MB
log4j.appender.bundle.appender.MaxBackupIndex=2
log4j.appender.bundle.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.bundle.appender.layout.ConversionPattern=%d{ISO8601} |
%-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
log4j.appender.bundle.appender.file=${logdir}/bundles/$\\{bundle.name\\}.log
log4j.appender.bundle.appender.append=true
log4j.appender.bundle.threshold=INFO

You will end up with a separate log file per bundle (named with the
bundle's name). I use a custom variable (${logdir}) to specify where to
create the log file but you can do as you wish. In this case these log
files will be at INFO level.

Sometimes I want TRACE logging on a specific bundle. I can then do as
follows:

log4j.rootLogger=TRACE, stdout, info, error, bundle, context, osgi:*,
bundle_trace

log4j.appender.bundle_trace=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.bundle_trace.key=bundle.name
log4j.appender.bundle_trace.default=karaf
log4j.appender.bundle_trace.appender=org.apache.log4j.RollingFileAppender
log4j.appender.bundle_trace.appender.MaxFileSize=10MB
log4j.appender.bundle_trace.appender.MaxBackupIndex=2
log4j.appender.bundle_trace.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.bundle_trace.appender.layout.ConversionPattern=%d{ISO8601} |
%-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
log4j.appender.bundle_trace.appender.file=${logdir}/bundles/trace/$\\{
bundle.name\\}.log
log4j.appender.bundle_trace.appender.append=true
log4j.appender.bundle_trace.threshold=TRACE
log4j.appender.bundle_trace.filter.a=org.apache.log4j.filter.MDCMatchFilter
log4j.appender.bundle_trace.filter.a.exactMatch=false
log4j.appender.bundle_trace.filter.a.keyToMatch=bundle.name
log4j.appender.bundle_trace.filter.a.valueToMatch=org.apache.aries.blueprint.core
# DenyAllFilter should always be the last filter
log4j.appender.bundle_trace.filter.z=org.apache.log4j.varia.DenyAllFilter

In the above example I create a separate TRACE log for the bundle with the
name "org.apache.aries.blueprint.core".

It is also possible to configure custom logging for a particular camel
context which we do in our integration platform based on Karaf and Camel.

/Bengt










2016-06-30 13:59 GMT+02:00 Jean-Baptiste Onofré <jb...@nanthrax.net>:

> Then it's different sift appenders that you have to define.
>
> Generally speaking, you don't need sift for what you want: if your bundles
> use different loggers, then, just create the logger category in the
> pax-logging config.
>
> Regards
> JB
>
> On 06/30/2016 01:56 PM, Debraj Manna wrote:
>
>>
>> Yeah if I enable sifting appender let's say with a config  and add it to
>> rootLogger
>>
>> log4j.appender.sift.threshold=DEBUG
>>
>>
>> Then this will make log level DEBUGfor all bundles. I am trying to ask
>> is let's say I have two bundles1& bundles2and I want bundle1 's log
>> level to be DEBUGand bundle2log level to be ERROR.
>>
>>
>> On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofré <jb@nanthrax.net
>> <ma...@nanthrax.net>> wrote:
>>
>>     Hi,
>>
>>     I don't see the sift appender enable for the root logger.
>>
>>     You should have:
>>
>>     log4j.rootLogger=DEBUG, async, sift, osgi:*
>>
>>     Regards
>>     JB
>>
>>     On 06/30/2016 08:23 AM, Debraj Manna wrote:
>>
>>         In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>>         |org.ops4j.pax.logging.cfg| looks like below:-
>>
>>         |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>>         log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer #
>> To
>>         avoid flooding the log when using DEBUG level on an ssh
>>         connection and
>>         doing log:tail
>>         log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO
>> #
>>         CONSOLE appender not used by default
>>         log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>>         log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>>         log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} |
>>         %-5.5p |
>>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>>         <http://bundle.id>} -
>>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>>         %X{bundle.version} | %X | %m%n #
>>         File appender
>>         log4j.appender.out=org.apache.log4j.RollingFileAppender
>>         log4j.appender.out.layout=org.apache.log4j.PatternLayout
>>         log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
>>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>>         <http://bundle.id>} -
>>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>>
>>         %X{bundle.version} | %X | %m%n
>>         log4j.appender.out.file=/tmp/servicemix.log
>>         log4j.appender.out.append=true
>> log4j.appender.out.maxFileSize=1024MB
>>         log4j.appender.out.maxBackupIndex=10 # Sift appender
>>         log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>>         log4j.appender.sift.key=bundle.name <http://bundle.name>
>>         <http://bundle.name>
>>         log4j.appender.sift.default=servicemix
>>         log4j.appender.sift.appender=org.apache.log4j.FileAppender
>>         log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>>         log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601}
>> |
>>         %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>>         log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>>         <http://bundle.name>
>>         <http://bundle.name>\\}.log
>>         log4j.appender.sift.appender.append=true #
>>         Async appender log4j.appender.async=org.apache.log4j.AsyncAppender
>>         log4j.appender.async.appenders=out|
>>
>>         |
>>
>>         Now this logger config is dumping Karaf's debug log as well
>>         whereas my
>>         intention is to |DEBUG| only a specific bundle.
>>
>>         Can some one let me know if it is possible to set different log
>>         levels
>>         for different bundles?
>>
>>         |
>>
>>         |
>>         |
>>
>>
>>     --
>>     Jean-Baptiste Onofré
>>     jbonofre@apache.org <ma...@apache.org>
>>     http://blog.nanthrax.net
>>     Talend - http://www.talend.com
>>
>>
>>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Re: Different log level for different Karaf Bundles

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Then it's different sift appenders that you have to define.

Generally speaking, you don't need sift for what you want: if your 
bundles use different loggers, then, just create the logger category in 
the pax-logging config.

Regards
JB

On 06/30/2016 01:56 PM, Debraj Manna wrote:
>
> Yeah if I enable sifting appender let's say with a config  and add it to
> rootLogger
>
> log4j.appender.sift.threshold=DEBUG
>
>
> Then this will make log level DEBUGfor all bundles. I am trying to ask
> is let's say I have two bundles1& bundles2and I want bundle1 's log
> level to be DEBUGand bundle2log level to be ERROR.
>
>
> On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofr� <jb@nanthrax.net
> <ma...@nanthrax.net>> wrote:
>
>     Hi,
>
>     I don't see the sift appender enable for the root logger.
>
>     You should have:
>
>     log4j.rootLogger=DEBUG, async, sift, osgi:*
>
>     Regards
>     JB
>
>     On 06/30/2016 08:23 AM, Debraj Manna wrote:
>
>         In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>         |org.ops4j.pax.logging.cfg| looks like below:-
>
>         |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>         log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer # To
>         avoid flooding the log when using DEBUG level on an ssh
>         connection and
>         doing log:tail
>         log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO #
>         CONSOLE appender not used by default
>         log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>         log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>         log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} |
>         %-5.5p |
>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>         <http://bundle.id>} -
>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>         %X{bundle.version} | %X | %m%n #
>         File appender
>         log4j.appender.out=org.apache.log4j.RollingFileAppender
>         log4j.appender.out.layout=org.apache.log4j.PatternLayout
>         log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
>         %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>
>         <http://bundle.id>} -
>         %X{bundle.name <http://bundle.name> <http://bundle.name>} -
>         %X{bundle.version} | %X | %m%n
>         log4j.appender.out.file=/tmp/servicemix.log
>         log4j.appender.out.append=true log4j.appender.out.maxFileSize=1024MB
>         log4j.appender.out.maxBackupIndex=10 # Sift appender
>         log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>         log4j.appender.sift.key=bundle.name <http://bundle.name>
>         <http://bundle.name>
>         log4j.appender.sift.default=servicemix
>         log4j.appender.sift.appender=org.apache.log4j.FileAppender
>         log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>         log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
>         %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>         log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>         <http://bundle.name>
>         <http://bundle.name>\\}.log
>         log4j.appender.sift.appender.append=true #
>         Async appender log4j.appender.async=org.apache.log4j.AsyncAppender
>         log4j.appender.async.appenders=out|
>
>         |
>
>         Now this logger config is dumping Karaf's debug log as well
>         whereas my
>         intention is to |DEBUG| only a specific bundle.
>
>         Can some one let me know if it is possible to set different log
>         levels
>         for different bundles?
>
>         |
>
>         |
>         |
>
>
>     --
>     Jean-Baptiste Onofr�
>     jbonofre@apache.org <ma...@apache.org>
>     http://blog.nanthrax.net
>     Talend - http://www.talend.com
>
>

-- 
Jean-Baptiste Onofr�
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: Different log level for different Karaf Bundles

Posted by Debraj Manna <su...@gmail.com>.
Yeah if I enable sifting appender let's say with a config  and add it to
rootLogger

log4j.appender.sift.threshold=DEBUG


Then this will make log level DEBUG for all bundles. I am trying to ask is
let's say I have two bundles1 & bundles2 and I want bundle1 's log level to
be DEBUG and bundle2 log level to be ERROR.

On Thu, Jun 30, 2016 at 2:12 PM, Jean-Baptiste Onofré <jb...@nanthrax.net>
wrote:

> Hi,
>
> I don't see the sift appender enable for the root logger.
>
> You should have:
>
> log4j.rootLogger=DEBUG, async, sift, osgi:*
>
> Regards
> JB
>
> On 06/30/2016 08:23 AM, Debraj Manna wrote:
>
>> In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
>> |org.ops4j.pax.logging.cfg| looks like below:-
>>
>> |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
>> log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer # To
>> avoid flooding the log when using DEBUG level on an ssh connection and
>> doing log:tail
>> log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO #
>> CONSOLE appender not used by default
>> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>> log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
>> %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>} -
>> %X{bundle.name <http://bundle.name>} - %X{bundle.version} | %X | %m%n #
>> File appender log4j.appender.out=org.apache.log4j.RollingFileAppender
>> log4j.appender.out.layout=org.apache.log4j.PatternLayout
>> log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
>> %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>} -
>> %X{bundle.name <http://bundle.name>} - %X{bundle.version} | %X | %m%n
>> log4j.appender.out.file=/tmp/servicemix.log
>> log4j.appender.out.append=true log4j.appender.out.maxFileSize=1024MB
>> log4j.appender.out.maxBackupIndex=10 # Sift appender
>> log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
>> log4j.appender.sift.key=bundle.name <http://bundle.name>
>> log4j.appender.sift.default=servicemix
>> log4j.appender.sift.appender=org.apache.log4j.FileAppender
>> log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
>> log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
>> %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
>> log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
>> <http://bundle.name>\\}.log log4j.appender.sift.appender.append=true #
>> Async appender log4j.appender.async=org.apache.log4j.AsyncAppender
>> log4j.appender.async.appenders=out|
>>
>> |
>>
>> Now this logger config is dumping Karaf's debug log as well whereas my
>> intention is to |DEBUG| only a specific bundle.
>>
>> Can some one let me know if it is possible to set different log levels
>> for different bundles?
>>
>> |
>>
>> |
>> |
>>
>>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Re: Different log level for different Karaf Bundles

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

I don't see the sift appender enable for the root logger.

You should have:

log4j.rootLogger=DEBUG, async, sift, osgi:*

Regards
JB

On 06/30/2016 08:23 AM, Debraj Manna wrote:
> In |Karaf 3.0.5| running under |Servicemix 6.1.0| my
> |org.ops4j.pax.logging.cfg| looks like below:-
>
> |# Root logger log4j.rootLogger=DEBUG, async, osgi:*
> log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer # To
> avoid flooding the log when using DEBUG level on an ssh connection and
> doing log:tail
> log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO #
> CONSOLE appender not used by default
> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
> log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
> %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>} -
> %X{bundle.name <http://bundle.name>} - %X{bundle.version} | %X | %m%n #
> File appender log4j.appender.out=org.apache.log4j.RollingFileAppender
> log4j.appender.out.layout=org.apache.log4j.PatternLayout
> log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p |
> %-16.16t | %-32.32c{1} | %X{bundle.id <http://bundle.id>} -
> %X{bundle.name <http://bundle.name>} - %X{bundle.version} | %X | %m%n
> log4j.appender.out.file=/tmp/servicemix.log
> log4j.appender.out.append=true log4j.appender.out.maxFileSize=1024MB
> log4j.appender.out.maxBackupIndex=10 # Sift appender
> log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.sift.key=bundle.name <http://bundle.name>
> log4j.appender.sift.default=servicemix
> log4j.appender.sift.appender=org.apache.log4j.FileAppender
> log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} |
> %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
> log4j.appender.sift.appender.file=/tmp/$\\{bundle.name
> <http://bundle.name>\\}.log log4j.appender.sift.appender.append=true #
> Async appender log4j.appender.async=org.apache.log4j.AsyncAppender
> log4j.appender.async.appenders=out|
>
> |
>
> Now this logger config is dumping Karaf's debug log as well whereas my
> intention is to |DEBUG| only a specific bundle.
>
> Can some one let me know if it is possible to set different log levels
> for different bundles?
>
> |
>
> |
> |
>

-- 
Jean-Baptiste Onofr�
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com