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 <[email protected]> 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é <[email protected]>:
>
>> 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é <[email protected]
>>> <mailto:[email protected]>> 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é
>>>     [email protected] <mailto:[email protected]>
>>>     http://blog.nanthrax.net
>>>     Talend - http://www.talend.com
>>>
>>>
>>>
>> --
>> Jean-Baptiste Onofré
>> [email protected]
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>
>

Reply via email to