You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Henrik Niehaus <he...@gmx.de> on 2009/10/10 16:56:56 UTC

Logging and iPOJO

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: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Logging and iPOJO

Posted by Clement Escoffier <cl...@gmail.com>.
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: users-unsubscribe@felix.apache.org
>>> For additional commands, e-mail: users-help@felix.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>
>
> -- 
> Mein öffentlicher PGP Schlüssel und Fingerabdruck:
> http://hampelratte.org/pgp/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>


Re: Logging and iPOJO

Posted by Henrik Niehaus <he...@gmx.de>.
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(...) ?

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: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 


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

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Logging and iPOJO

Posted by Clement Escoffier <cl...@gmail.com>.
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: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org