[ 
https://issues.apache.org/jira/browse/FELIX-6407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17346424#comment-17346424
 ] 

Tom Watson commented on FELIX-6407:
-----------------------------------

The original PR introduced an OSGi-SCR-incompatible extension that simply 
changed the specified logger names that SCR should be using.  This allows for 
the root LoggerContext to be used to configure the log levels instead of having 
to get the LoggerContext of every bundle to configure the various log levels 
for all the SCR components.

I still do not understand why we would want the log events to look like they 
are coming from SCR itself here nor why doing so helps with optimizations. 

IIRC we have a single BundleListener that only listens for STOPPED events and 
that does a simple removal from a map for the bundle's logger.  I am surprised 
this BundleListener is showing up as a performance hit for any scenario.  You 
mention that the bundle listener is trying to retrieve the log levels of every 
bundle. Which bundle listener are you referring to?  The one that LogManager 
provides does nothing with log levels, it only removes something from a map on 
the STOPPED event and I think there should only be one of these.  Are you 
referring to the BundleListener SCR uses in general to start processing bundle 
components?  Again, I am surprised that the usage of the OSGi Logger here is 
showing up as a performance hit when the default log level of WARN is being 
used.  By and large there should be relatively few log events fired that are 
WARN or ERROR and the Logger implementation must be highly optimized to be a 
no-op when the log level is not met for a specific call to log.

> SCR Log Extension still logs using the log level of the extended bundle
> -----------------------------------------------------------------------
>
>                 Key: FELIX-6407
>                 URL: https://issues.apache.org/jira/browse/FELIX-6407
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-2.1.24, scr-2.1.26
>            Reporter: Amit Mondal
>            Priority: Minor
>              Labels: pull-request-available
>
> The SCR incorporates 3 different types of logging:
>  * Logging for SCR main code (_*ScrLogger*_)
>  * Logging on behalf of the bundle comprising the SCR component 
> (_*BundleLogger*_)
>  * Logging on behalf of the component under processing (_*ComponentLogger*_)
> According to the current implementation, the SCR logging is by default 
> enabled and it logs using the log levels of the bundles comprising the SCR 
> components. 
> This [PR|https://github.com/apache/felix-dev/pull/36] by [~pkriens] has been 
> merged to introduce a non-OSGi standard extension which enables consumers to 
> extend the SCR logging functionality, that is, a consumer can on demand set 
> the log level of the SCR bundle itself which after setting a specific 
> property (_*ds.log.extension*_) will be enabled. Now, SCR will be able to use 
> the log level of itself for all the logging. It won't use the log levels of 
> the bundles under processing.
> The specified SCR versions still log using the log levels of the bundles 
> under processing even though _*ds.log.extension*_ framework property is 
> correctly set.
> This feature to extend SCR logging is useful in very low memory IoT devices 
> where many bundles (>200) are installed and SCR's intensive logging becomes 
> very costly.
> The feature can further be extended to disable the logging completely. Hence, 
> I am proposing the following approach:
> We should introduce another framework property to disable the SCR logging 
> completely, let's say _*ds.log.enabled*_
> By default, this property will not be set which means the logging is enabled 
> by default, otherwise consumer can decide to disable the logging by setting 
> it to _*false*_
> If the logging is still enabled, the consumer now has two options:
>  * Use the log level of the extended bundle (bundle under processing)
>  * Use the log level of the SCR bundle itself
> If we decide to let SCR use its own log level, the _*ds.log.extension*_ needs 
> to be set.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to