[ https://issues.apache.org/jira/browse/FELIX-1186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12713986#action_12713986 ]
Felix Meschberger commented on FELIX-1186: ------------------------------------------ Good idea. I would follow the SLF4J way, though and do it like this: public void log(int, ComponentMetadata, Throwable, String message, Object[] args) with helpers for one, two, and maybe three arguments. The message would probably be a format string for java.text.MessageFormat. I would not use the Java 5 varargs style (for now) because we like to keep our core stuff 1.4 (if not 1.3) compliant. Regarding the singleton utility: I am not so sure, since the BundleComponentActivator uses a LogService acquired through the BundleContext of the component declaring bundle. Can you provide a patch for this ? > Defer the construction of a log message > --------------------------------------- > > Key: FELIX-1186 > URL: https://issues.apache.org/jira/browse/FELIX-1186 > Project: Felix > Issue Type: Improvement > Components: Declarative Services (SCR) > Affects Versions: scr-1.0.8 > Reporter: Agemo Cui > Priority: Trivial > > There are a lot of log messages at the DEBUG level constructed in the first > place. > My thinking is to put the construction of a message after the threshold of > the log level is compared to, which could improve the performance and > especially means much on a resource constrained device. > Since most of the log message is constructed by simply concatenating String > values of several objects, the prototype of the method > BundleComponentActivator.log(a singleton utility may be better) could be like > the following. > public void log( int level, ComponentMetadata metadata, Throwable ex, > Object... objs ); > And because most messages consist of no more than 3 objects, we can even > implement 3 more log methods as follows to avoid the creation of an object > array. > public void log( int level, ComponentMetadata metadata, Throwable ex, Object > obj ); > public void log( int level, ComponentMetadata metadata, Throwable ex, Object > obj0, Object obj1 ); > public void log( int level, ComponentMetadata metadata, Throwable ex, Object > obj0, Object obj1, Object obj2 ); > And the final log message can be constructed after "if ( m_logLevel >= level > )". -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.