On 10.10.2009, at 21:27, Henrik Niehaus wrote:

Hi Clement,

I'm not sure, if I understood you right. Do you mean, I should create a
central method for logging for each bundle? Maybe a static one like
BundleXYLogger.log(...) ?

OSGi generally discourage using statis.


Something that you can do it to use the 'temporal' dependencies injected as proxy. So, the main component have the dependency:
@Requires(proxy=true) // It's not the same @requires
private LogService log;


Then, you give a reference to this object on your sub-components:
myhelper = new MySubComponent(log);

In that case, the log is available from the MySubComponent object. It inherits the characteristics from the dependency.

You will find more details on:
http://felix.apache.org/site/how-to-use-ipojo-annotations.html#HowtouseiPOJOAnnotations-TemporalDependencies%2528externalhandler%2529 (section Temporal Dependencies (external handler))
and http://felix.apache.org/site/temporal-service-dependency.html


Regards,

Clement

PS: The proxy support will be extended to all service dependencies in the 1.6.0.





Clement Escoffier schrieb:
Hi,

Something recommended is to create a log method to get the logger. I
also recommend you to set the dependency optional (enabling the nullable object support). In that case, if the logger is not there, you can still
call the log but nothing will happen:


@Component
public class MyApp {


@Requires(optional=true)
private LogService log;

public log(int level, String mes) { // Don't need to be synchronize
   log.(level, mes);
}

...

}

Regards,

Clement


On 10.10.2009, at 16:56, Henrik Niehaus wrote:

Hi *,

another question concerning iPOJO. I'm wondering how to use the osgi
logging service with iPOJO. Let's assume I want to use the logger like
this:

@Component
public class LoggerTest {

  @Requires
  private LogService log;

  @Validate
  public void validate() {
      log.log(LogService.LOG_INFO, "Alles klar. Der Logger is da");
  }

  @Invalidate
  public void invalidate() {
      System.err.println("Verflixt, der logger is weg");
  }
}

Then I would need to convert every class, in which I want to use a
logger, to be a component. That would result in a lot of components.
That doesn't seem to be correct to me. Is there a best practice for
logging and iPOJO?

Cheers
Henrik

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



--
Mein öffentlicher PGP Schlüssel und Fingerabdruck:
http://hampelratte.org/pgp/

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to