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é <j...@nanthrax.net
<mailto:j...@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é
        <j...@nanthrax.net <mailto:j...@nanthrax.net>
        <mailto:j...@nanthrax.net <mailto:j...@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é
        jbono...@apache.org <mailto:jbono...@apache.org>
        <mailto:jbono...@apache.org <mailto:jbono...@apache.org>>
        http://blog.nanthrax.net
             Talend - http://www.talend.com



    --
    Jean-Baptiste Onofré
    jbono...@apache.org <mailto:jbono...@apache.org>
    http://blog.nanthrax.net
    Talend - http://www.talend.com



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

Reply via email to