Re: [classlib] logging from within our implementation

2006-06-09 Thread Alexei Zakharov

> I promise that if we need logging then I'll personally volunteer to
> uncomment those same lines, and let Alexei make fun of me while saying
> 'I told you so'.
in Russian.


I can do it in several languages of your choice (Russian, English,
Japanese) if this helps to resolve the situation with logging.  :)

2006/6/9, Geir Magnusson Jr <[EMAIL PROTECTED]>:


Tim Ellison wrote:
> Geir Magnusson Jr wrote:
>> Tim Ellison wrote:
>>> Resurrecting this thread, with some trepidation...
>>>
>>> We went round the houses a bit, but did we reach a conclusion to the
>>> questions you posed?
>> Sadly, no, it doesn't seem so.
>>
>> I was hoping that Aspect-Master-George might give us some hints...
>>
>>> I'm eager to fix-up the DNS provider code.
>> Is there something driving that other than the desire to "put it to
>> bed"?  (Just curious)
>>
>> Can you just comment the stuff out?  (or I can - I'll be happy to)
>
> Ok, so here goes...
>
> I shall leave the logging statements in place but comment them out (so
> they are easy to replace if we decide we can't live without them, or
> indeed that all classlib code should contain logging) and I will remove
> the o.a.h.util.logging.LogConst type from the JNDI module.

Oh, o.a.h.util.logging.LogConst... we barely knew ye

>
> I promise that if we need logging then I'll personally volunteer to
> uncomment those same lines, and let Alexei make fun of me while saying
> 'I told you so'.

in Russian.

geir

>
> Regards,
> Tim


--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-09 Thread Alexei Zakharov

Mark,


My non-virtual machine of choice is a linux system.  It's DNS provider
(in the system libraries) doesn't log failures directly.
I can't understand why it should be different for my virtual machine.


Your choice is linux, other person's choice is windows, I'm ok with
both. Unix systems are known with their silent command line tools and
this is not the only possible way we necessarily should go. I don't
see why this Linux <-> JVM corellation should be so strong.


My operating system provides a number of specialist tools for
diagnosing/resolving (pardon the pun) DNS problems, I'd rather use them
for this task than burden the jvm with this task.  They will undoubtedly
do a better job because that is their only job.


Sorry, I didn't catch it. You are arguing against java DNS tools? Sun
has it, it is better for us to have it. And if we have it, it is
better to have a good tool rather than bad one. And a good tool does
the job as good as it can. Including providing meaningful user-level
log messages (let it be disabled by default if you prefer).  ;-)


2006/6/8, Mark Hindess <[EMAIL PROTECTED]>:


My non-virtual machine of choice is a linux system.  It's DNS provider
(in the system libraries) doesn't log failures directly.

I can't understand why it should be different for my virtual machine.
Certainly no other JVM's do this and we should be striving to maintain
behaviour that isn't going to surprise/confuse users[0].

My operating system provides a number of specialist tools for
diagnosing/resolving (pardon the pun) DNS problems, I'd rather use them
for this task than burden the jvm with this task.  They will undoubtedly
do a better job because that is their only job.

I realise that this is an argument for not having logging on by
default.  It is not an argument for not having logging at all.

Just my 0.02 GBP.

Regards,
 Mark.

[0] There may be times when the greater good is served by breaking this
   rule - surprising users not confusing them ;-) - but I don't think
   this is one of them.

On 8 June 2006 at 20:03, "Alexei Zakharov" <[EMAIL PROTECTED]> wrote:
> Once again. DNS provider does not look like another math lib. Yes, it
> is a part of JVM. But it is a network application nevetheless like ftp
> client, icq or whatever. It needs to warn people about some network
> conditions and events without self-termination. It has maximum one
> user-level log message (nano- or microseconds) per several network
> transactions (can last many seconds). I don't see any reasonable
> motivation to remove such messages. We won't get any performance
> impact. Only reduce the usability of the system by doing this.
>
> 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
> > I can't recall my jvms ever logging that way for critical stuff - they
> > usually just throw errors, right?
> >
> > Alexei Zakharov wrote:
> > > People, have compassion on critical error/info messages at least (>=
> > > Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
> > > end user!
> > >
> > > 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
> > >>
> > >>
> > >> Tim Ellison wrote:
> > >> > Resurrecting this thread, with some trepidation...
> > >> >
> > >> > We went round the houses a bit, but did we reach a conclusion to the
> > >> > questions you posed?
> > >>
> > >> Sadly, no, it doesn't seem so.
> > >>
> > >> I was hoping that Aspect-Master-George might give us some hints...
> > >>
> > >> >
> > >> > I'm eager to fix-up the DNS provider code.
> > >>
> > >> Is there something driving that other than the desire to "put it to
> > >> bed"?  (Just curious)
> > >>
> > >> Can you just comment the stuff out?  (or I can - I'll be happy to)
> > >>
> > >> geir
> > >>
> > >> >
> > >> > Regards,
> > >> > Tim
> > >> >
> > >> > Geir Magnusson Jr wrote:
> > >> >> Seems like there is an important issue here, but the discussion can't
> > >> >> seem to escape out of the thicket of the example.
> > >> >>
> > >> >> 1) Should we allow any logging from within the classlibrary?
> > >> >>
> > >> >> 2) How should we do it?
> > >> >>
> > >> >> There are a bunch of ways for the second question...  using j.u.l,
> > >> using
> > >> >>  IOC and injecting our own logging target to reduce dependencies and
> > >> >> make people think before logging, using aspects?
> > >> >>
> > >> >> Comments?  We probably should try to get to a conclusion in general..
> .
> > >> >>
> > >> >> geir
> > >
> > >
> > >
> >
> > -
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Alexei Zakharov,
> Intel Middleware Product Division
>
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



-

Re: [classlib] logging from within our implementation

2006-06-09 Thread Geir Magnusson Jr


Tim Ellison wrote:
> Geir Magnusson Jr wrote:
>> Tim Ellison wrote:
>>> Resurrecting this thread, with some trepidation...
>>>
>>> We went round the houses a bit, but did we reach a conclusion to the
>>> questions you posed?
>> Sadly, no, it doesn't seem so.
>>
>> I was hoping that Aspect-Master-George might give us some hints...
>>
>>> I'm eager to fix-up the DNS provider code.
>> Is there something driving that other than the desire to "put it to
>> bed"?  (Just curious)
>>
>> Can you just comment the stuff out?  (or I can - I'll be happy to)
> 
> Ok, so here goes...
> 
> I shall leave the logging statements in place but comment them out (so
> they are easy to replace if we decide we can't live without them, or
> indeed that all classlib code should contain logging) and I will remove
> the o.a.h.util.logging.LogConst type from the JNDI module.

Oh, o.a.h.util.logging.LogConst... we barely knew ye

> 
> I promise that if we need logging then I'll personally volunteer to
> uncomment those same lines, and let Alexei make fun of me while saying
> 'I told you so'.

in Russian.

geir

> 
> Regards,
> Tim
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-09 Thread Tim Ellison
Geir Magnusson Jr wrote:
> 
> Tim Ellison wrote:
>> Resurrecting this thread, with some trepidation...
>>
>> We went round the houses a bit, but did we reach a conclusion to the
>> questions you posed?
> 
> Sadly, no, it doesn't seem so.
> 
> I was hoping that Aspect-Master-George might give us some hints...
> 
>> I'm eager to fix-up the DNS provider code.
> 
> Is there something driving that other than the desire to "put it to
> bed"?  (Just curious)
> 
> Can you just comment the stuff out?  (or I can - I'll be happy to)

Ok, so here goes...

I shall leave the logging statements in place but comment them out (so
they are easy to replace if we decide we can't live without them, or
indeed that all classlib code should contain logging) and I will remove
the o.a.h.util.logging.LogConst type from the JNDI module.

I promise that if we need logging then I'll personally volunteer to
uncomment those same lines, and let Alexei make fun of me while saying
'I told you so'.

Regards,
Tim

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [offlist] Re: [classlib] logging from within our implementation

2006-06-09 Thread Leo Simons
On Mon, Jun 05, 2006 at 11:17:50AM +0100, Tim Ellison wrote:
> [Eek!  ok so you can see that wasn't intended to go onto the list]

FWIW and IMVHO, this kind of thing is entirely appropriate on-list :-)

> Apologies for embarrassing George (... but buy the book anyway)

I just might!

> Tim Ellison wrote:
> > Talk to George, he's a world expert on Aspects
> > 
> > (and co-author of a book on the subject)
> > http://www.amazon.com/gp/product/0321245873/qid=1149502393/sr=1-1/ref=sr_1_1/102-7435876-8007311?s=books&v=glance&n=283155
> > 
> > Regards,
> > Tim
> > 
> > 
> > Geir Magnusson Jr wrote:
> >> Stefano Mazzocchi wrote:
> >>
> >>> Maybe we should start thinking more with that in mind and think about
> >>> scratching our own itches in terms of development... we might find some
> >>> serious innovation on the way to there.
> >>>
> >> I think the disagreement boils down to defining the "itch".  I'm not
> >> interested in the overhead because while we will own the VM for our
> >> distro, it's still overhead and additionally, we want others w/ VMs to
> >> use our classlibrary too (like Sun, BEA, IBM, Apple... )
> >>
> >> I'm going to dork around w/ aspects to see if we can make the addition
> >> of debugging a pre-processing step used by people that want to debug...
> >>
> >> geir

-- 

LSD

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Mark Hindess

My non-virtual machine of choice is a linux system.  It's DNS provider
(in the system libraries) doesn't log failures directly.

I can't understand why it should be different for my virtual machine.
Certainly no other JVM's do this and we should be striving to maintain
behaviour that isn't going to surprise/confuse users[0].

My operating system provides a number of specialist tools for
diagnosing/resolving (pardon the pun) DNS problems, I'd rather use them
for this task than burden the jvm with this task.  They will undoubtedly
do a better job because that is their only job.

I realise that this is an argument for not having logging on by 
default.  It is not an argument for not having logging at all.

Just my 0.02 GBP.

Regards,
 Mark.

[0] There may be times when the greater good is served by breaking this
rule - surprising users not confusing them ;-) - but I don't think
this is one of them.

On 8 June 2006 at 20:03, "Alexei Zakharov" <[EMAIL PROTECTED]> wrote:
> Once again. DNS provider does not look like another math lib. Yes, it
> is a part of JVM. But it is a network application nevetheless like ftp
> client, icq or whatever. It needs to warn people about some network
> conditions and events without self-termination. It has maximum one
> user-level log message (nano- or microseconds) per several network
> transactions (can last many seconds). I don't see any reasonable
> motivation to remove such messages. We won't get any performance
> impact. Only reduce the usability of the system by doing this.
> 
> 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
> > I can't recall my jvms ever logging that way for critical stuff - they
> > usually just throw errors, right?
> >
> > Alexei Zakharov wrote:
> > > People, have compassion on critical error/info messages at least (>=
> > > Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
> > > end user!
> > >
> > > 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
> > >>
> > >>
> > >> Tim Ellison wrote:
> > >> > Resurrecting this thread, with some trepidation...
> > >> >
> > >> > We went round the houses a bit, but did we reach a conclusion to the
> > >> > questions you posed?
> > >>
> > >> Sadly, no, it doesn't seem so.
> > >>
> > >> I was hoping that Aspect-Master-George might give us some hints...
> > >>
> > >> >
> > >> > I'm eager to fix-up the DNS provider code.
> > >>
> > >> Is there something driving that other than the desire to "put it to
> > >> bed"?  (Just curious)
> > >>
> > >> Can you just comment the stuff out?  (or I can - I'll be happy to)
> > >>
> > >> geir
> > >>
> > >> >
> > >> > Regards,
> > >> > Tim
> > >> >
> > >> > Geir Magnusson Jr wrote:
> > >> >> Seems like there is an important issue here, but the discussion can't
> > >> >> seem to escape out of the thicket of the example.
> > >> >>
> > >> >> 1) Should we allow any logging from within the classlibrary?
> > >> >>
> > >> >> 2) How should we do it?
> > >> >>
> > >> >> There are a bunch of ways for the second question...  using j.u.l,
> > >> using
> > >> >>  IOC and injecting our own logging target to reduce dependencies and
> > >> >> make people think before logging, using aspects?
> > >> >>
> > >> >> Comments?  We probably should try to get to a conclusion in general..
> .
> > >> >>
> > >> >> geir
> > >
> > >
> > >
> >
> > -
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> 
> -- 
> Alexei Zakharov,
> Intel Middleware Product Division
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Tim Ellison
There are many places where the VM / class libraries interact with the
outside world; in some cases very similar to the DNS provider (e.g.
URLClassLoader, ServerSocketChannel, etc) in other cases no so similar
(e.g. allocating OS memory, writing to the file system, etc).

As Geir said, the code typically will deal with problems it encounters
where it makes sense to continue, or throws an exception / error where
it does not.

An advantage of being a 'virtual' machine is that you can introspect the
execution (debugging, execution trace, exceptions, etc.) orthogonally to
the application logic relatively easily.

Regards,
Tim

Alexei Zakharov wrote:
> Once again. DNS provider does not look like another math lib. Yes, it
> is a part of JVM. But it is a network application nevetheless like ftp
> client, icq or whatever. It needs to warn people about some network
> conditions and events without self-termination. It has maximum one
> user-level log message (nano- or microseconds) per several network
> transactions (can last many seconds). I don't see any reasonable
> motivation to remove such messages. We won't get any performance
> impact. Only reduce the usability of the system by doing this.
> 
> 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>> I can't recall my jvms ever logging that way for critical stuff - they
>> usually just throw errors, right?
>>
>> Alexei Zakharov wrote:
>> > People, have compassion on critical error/info messages at least (>=
>> > Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
>> > end user!
>> >
>> > 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>> >>
>> >>
>> >> Tim Ellison wrote:
>> >> > Resurrecting this thread, with some trepidation...
>> >> >
>> >> > We went round the houses a bit, but did we reach a conclusion to the
>> >> > questions you posed?
>> >>
>> >> Sadly, no, it doesn't seem so.
>> >>
>> >> I was hoping that Aspect-Master-George might give us some hints...
>> >>
>> >> >
>> >> > I'm eager to fix-up the DNS provider code.
>> >>
>> >> Is there something driving that other than the desire to "put it to
>> >> bed"?  (Just curious)
>> >>
>> >> Can you just comment the stuff out?  (or I can - I'll be happy to)
>> >>
>> >> geir
>> >>
>> >> >
>> >> > Regards,
>> >> > Tim
>> >> >
>> >> > Geir Magnusson Jr wrote:
>> >> >> Seems like there is an important issue here, but the discussion
>> can't
>> >> >> seem to escape out of the thicket of the example.
>> >> >>
>> >> >> 1) Should we allow any logging from within the classlibrary?
>> >> >>
>> >> >> 2) How should we do it?
>> >> >>
>> >> >> There are a bunch of ways for the second question...  using j.u.l,
>> >> using
>> >> >>  IOC and injecting our own logging target to reduce dependencies
>> and
>> >> >> make people think before logging, using aspects?
>> >> >>
>> >> >> Comments?  We probably should try to get to a conclusion in
>> general...
>> >> >>
>> >> >> geir
>> >
>> >
>> >
>>
>> -
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Alexei Zakharov

Once again. DNS provider does not look like another math lib. Yes, it
is a part of JVM. But it is a network application nevetheless like ftp
client, icq or whatever. It needs to warn people about some network
conditions and events without self-termination. It has maximum one
user-level log message (nano- or microseconds) per several network
transactions (can last many seconds). I don't see any reasonable
motivation to remove such messages. We won't get any performance
impact. Only reduce the usability of the system by doing this.

2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:

I can't recall my jvms ever logging that way for critical stuff - they
usually just throw errors, right?

Alexei Zakharov wrote:
> People, have compassion on critical error/info messages at least (>=
> Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
> end user!
>
> 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>>
>>
>> Tim Ellison wrote:
>> > Resurrecting this thread, with some trepidation...
>> >
>> > We went round the houses a bit, but did we reach a conclusion to the
>> > questions you posed?
>>
>> Sadly, no, it doesn't seem so.
>>
>> I was hoping that Aspect-Master-George might give us some hints...
>>
>> >
>> > I'm eager to fix-up the DNS provider code.
>>
>> Is there something driving that other than the desire to "put it to
>> bed"?  (Just curious)
>>
>> Can you just comment the stuff out?  (or I can - I'll be happy to)
>>
>> geir
>>
>> >
>> > Regards,
>> > Tim
>> >
>> > Geir Magnusson Jr wrote:
>> >> Seems like there is an important issue here, but the discussion can't
>> >> seem to escape out of the thicket of the example.
>> >>
>> >> 1) Should we allow any logging from within the classlibrary?
>> >>
>> >> 2) How should we do it?
>> >>
>> >> There are a bunch of ways for the second question...  using j.u.l,
>> using
>> >>  IOC and injecting our own logging target to reduce dependencies and
>> >> make people think before logging, using aspects?
>> >>
>> >> Comments?  We probably should try to get to a conclusion in general...
>> >>
>> >> geir
>
>
>

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Geir Magnusson Jr
I can't recall my jvms ever logging that way for critical stuff - they
usually just throw errors, right?

Alexei Zakharov wrote:
> People, have compassion on critical error/info messages at least (>=
> Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
> end user!
> 
> 2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>>
>>
>> Tim Ellison wrote:
>> > Resurrecting this thread, with some trepidation...
>> >
>> > We went round the houses a bit, but did we reach a conclusion to the
>> > questions you posed?
>>
>> Sadly, no, it doesn't seem so.
>>
>> I was hoping that Aspect-Master-George might give us some hints...
>>
>> >
>> > I'm eager to fix-up the DNS provider code.
>>
>> Is there something driving that other than the desire to "put it to
>> bed"?  (Just curious)
>>
>> Can you just comment the stuff out?  (or I can - I'll be happy to)
>>
>> geir
>>
>> >
>> > Regards,
>> > Tim
>> >
>> > Geir Magnusson Jr wrote:
>> >> Seems like there is an important issue here, but the discussion can't
>> >> seem to escape out of the thicket of the example.
>> >>
>> >> 1) Should we allow any logging from within the classlibrary?
>> >>
>> >> 2) How should we do it?
>> >>
>> >> There are a bunch of ways for the second question...  using j.u.l,
>> using
>> >>  IOC and injecting our own logging target to reduce dependencies and
>> >> make people think before logging, using aspects?
>> >>
>> >> Comments?  We probably should try to get to a conclusion in general...
>> >>
>> >> geir
> 
> 
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Alexei Zakharov

People, have compassion on critical error/info messages at least (>=
Level.WARNING) . This is not a DEBUG logging, this is useful stuff for
end user!

2006/6/8, Geir Magnusson Jr <[EMAIL PROTECTED]>:



Tim Ellison wrote:
> Resurrecting this thread, with some trepidation...
>
> We went round the houses a bit, but did we reach a conclusion to the
> questions you posed?

Sadly, no, it doesn't seem so.

I was hoping that Aspect-Master-George might give us some hints...

>
> I'm eager to fix-up the DNS provider code.

Is there something driving that other than the desire to "put it to
bed"?  (Just curious)

Can you just comment the stuff out?  (or I can - I'll be happy to)

geir

>
> Regards,
> Tim
>
> Geir Magnusson Jr wrote:
>> Seems like there is an important issue here, but the discussion can't
>> seem to escape out of the thicket of the example.
>>
>> 1) Should we allow any logging from within the classlibrary?
>>
>> 2) How should we do it?
>>
>> There are a bunch of ways for the second question...  using j.u.l, using
>>  IOC and injecting our own logging target to reduce dependencies and
>> make people think before logging, using aspects?
>>
>> Comments?  We probably should try to get to a conclusion in general...
>>
>> geir




--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Geir Magnusson Jr


Tim Ellison wrote:
> Resurrecting this thread, with some trepidation...
> 
> We went round the houses a bit, but did we reach a conclusion to the
> questions you posed?

Sadly, no, it doesn't seem so.

I was hoping that Aspect-Master-George might give us some hints...

> 
> I'm eager to fix-up the DNS provider code.

Is there something driving that other than the desire to "put it to
bed"?  (Just curious)

Can you just comment the stuff out?  (or I can - I'll be happy to)

geir

> 
> Regards,
> Tim
> 
> Geir Magnusson Jr wrote:
>> Seems like there is an important issue here, but the discussion can't
>> seem to escape out of the thicket of the example.
>>
>> 1) Should we allow any logging from within the classlibrary?
>>
>> 2) How should we do it?
>>
>> There are a bunch of ways for the second question...  using j.u.l, using
>>  IOC and injecting our own logging target to reduce dependencies and
>> make people think before logging, using aspects?
>>
>> Comments?  We probably should try to get to a conclusion in general...
>>
>> geir
>>
>> -
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-08 Thread Tim Ellison
Resurrecting this thread, with some trepidation...

We went round the houses a bit, but did we reach a conclusion to the
questions you posed?

I'm eager to fix-up the DNS provider code.

Regards,
Tim

Geir Magnusson Jr wrote:
> Seems like there is an important issue here, but the discussion can't
> seem to escape out of the thicket of the example.
> 
> 1) Should we allow any logging from within the classlibrary?
> 
> 2) How should we do it?
> 
> There are a bunch of ways for the second question...  using j.u.l, using
>  IOC and injecting our own logging target to reduce dependencies and
> make people think before logging, using aspects?
> 
> Comments?  We probably should try to get to a conclusion in general...
> 
> geir
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [offlist] Re: [classlib] logging from within our implementation

2006-06-05 Thread Geir Magnusson Jr
Cool - he can tell us how it's done then :)

geir

Tim Ellison wrote:
> Talk to George, he's a world expert on Aspects
> 
> (and co-author of a book on the subject)
> http://www.amazon.com/gp/product/0321245873/qid=1149502393/sr=1-1/ref=sr_1_1/102-7435876-8007311?s=books&v=glance&n=283155
> 
> Regards,
> Tim
> 
> 
> Geir Magnusson Jr wrote:
>> Stefano Mazzocchi wrote:
>>
>>> Maybe we should start thinking more with that in mind and think about
>>> scratching our own itches in terms of development... we might find some
>>> serious innovation on the way to there.
>>>
>> I think the disagreement boils down to defining the "itch".  I'm not
>> interested in the overhead because while we will own the VM for our
>> distro, it's still overhead and additionally, we want others w/ VMs to
>> use our classlibrary too (like Sun, BEA, IBM, Apple... )
>>
>> I'm going to dork around w/ aspects to see if we can make the addition
>> of debugging a pre-processing step used by people that want to debug...
>>
>> geir
>>
>> -
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [offlist] Re: [classlib] logging from within our implementation

2006-06-05 Thread Tim Ellison
[Eek!  ok so you can see that wasn't intended to go onto the list]

Apologies for embarrassing George (... but buy the book anyway)

Tim

Tim Ellison wrote:
> Talk to George, he's a world expert on Aspects
> 
> (and co-author of a book on the subject)
> http://www.amazon.com/gp/product/0321245873/qid=1149502393/sr=1-1/ref=sr_1_1/102-7435876-8007311?s=books&v=glance&n=283155
> 
> Regards,
> Tim
> 
> 
> Geir Magnusson Jr wrote:
>> Stefano Mazzocchi wrote:
>>
>>> Maybe we should start thinking more with that in mind and think about
>>> scratching our own itches in terms of development... we might find some
>>> serious innovation on the way to there.
>>>
>> I think the disagreement boils down to defining the "itch".  I'm not
>> interested in the overhead because while we will own the VM for our
>> distro, it's still overhead and additionally, we want others w/ VMs to
>> use our classlibrary too (like Sun, BEA, IBM, Apple... )
>>
>> I'm going to dork around w/ aspects to see if we can make the addition
>> of debugging a pre-processing step used by people that want to debug...
>>
>> geir
>>
>> -
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[offlist] Re: [classlib] logging from within our implementation

2006-06-05 Thread Tim Ellison
Talk to George, he's a world expert on Aspects

(and co-author of a book on the subject)
http://www.amazon.com/gp/product/0321245873/qid=1149502393/sr=1-1/ref=sr_1_1/102-7435876-8007311?s=books&v=glance&n=283155

Regards,
Tim


Geir Magnusson Jr wrote:
> 
> Stefano Mazzocchi wrote:
> 
>> Maybe we should start thinking more with that in mind and think about
>> scratching our own itches in terms of development... we might find some
>> serious innovation on the way to there.
>>
> 
> I think the disagreement boils down to defining the "itch".  I'm not
> interested in the overhead because while we will own the VM for our
> distro, it's still overhead and additionally, we want others w/ VMs to
> use our classlibrary too (like Sun, BEA, IBM, Apple... )
> 
> I'm going to dork around w/ aspects to see if we can make the addition
> of debugging a pre-processing step used by people that want to debug...
> 
> geir
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Alexei Zakharov

After several tries I've got the desired result with

//#if ($debug)\
log.finest("my useful debug message");
//#end\

But probably there is a nicer way to do the same thing. I am not an
expert in Velocity.


2006/6/2, Soeren Strassfeld <[EMAIL PROTECTED]>:

At least, you have to be very careful.
Just had a simple test
where
 public static void main(String[] args){
 //#if (true)
   System.out.println("logging");
 //#end
 }
was merged to
 public static void main(String[] args){
 //System.out.println("logging");
 //  }

Soeren

(who thanks Geir every day for velocity ;)

Geir Magnusson Jr schrieb:
> Prove it.
>
> geir
>
> (who wrote a significant portion of velocity...)
>
>
>
> Soeren Strassfeld wrote:
>
>> That´s true, of course!
>>
>> Alexei Zakharov schrieb:
>>
>>> I worry about the situation when we got something Velocity-like in
>>> java code. Strings like "#foreach" or smth. like it in comments. This
>>> will probably break the V. compiler.
>>>
>>> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>>
 Hi Alexei,

 I think the result in both examples is quite the same, I just liked
 the Idea to just add java comments to the code, so you don´t
 need a precompiler as long as you build the classlib with logging
 statements.

 Cheers,
  Soeren

 Alexei Zakharov schrieb:

> Hi Soeren,
>
> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>
>> How about using Velocity as Preprocessor.
>> You could put all logging Statements between an
>> //#if ($debug)
>> and
>> //#end
>> So the Code would stay pure java, and the debug Version could be
>> compiled
>> without a Preprocessor.
>>
> Is this something better than just using java in the same way?
>
> static final boolean DEBUG = false;
> if (DEBUG) {
>// wiped away by java compiler
>log("my useful log message");
> }
>
> The problem of your approach as well as the above example is the
> additional syntax you need to add to each log call.
>
> However, I like the general idea of using Velocity as a Java
>
 preprocessor

> :)


--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Alexei Zakharov

For example, I failed to pass the following valid Java fragment
through the Velocity 1.4 compiler:

public static void main(String argv[]) {
   // for #foreach lovers
   String s = "I love #foreach statement";
}

2006/6/2, Geir Magnusson Jr <[EMAIL PROTECTED]>:



Alexei Zakharov wrote:
>> Where do we have #foreach in our code?
>
> I suppose nowhere currently. I mean we will need to define additional
> coding rules to avoid using of such strings in the future.

Why?  velocity does a reasonable job at figuring out VTL-like things
that aren't VTL...

geir

>
>> (who wrote a significant portion of velocity...)
>
> Really? I had no idea about that :))
>
>
> 2006/6/2, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>> Prove it.
>>
>> geir
>>
>> (who wrote a significant portion of velocity...)
>>
>> Soeren Strassfeld wrote:
>> > That´s true, of course!
>> >
>> > Alexei Zakharov schrieb:
>> >> I worry about the situation when we got something Velocity-like in
>> >> java code. Strings like "#foreach" or smth. like it in comments. This
>> >> will probably break the V. compiler.
>> >>
>> >> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> >>> Hi Alexei,
>> >>>
>> >>> I think the result in both examples is quite the same, I just liked
>> >>> the Idea to just add java comments to the code, so you don´t
>> >>> need a precompiler as long as you build the classlib with logging
>> >>> statements.
>> >>>
>> >>> Cheers,
>> >>>  Soeren
>> >>>
>> >>> Alexei Zakharov schrieb:
>> >>> > Hi Soeren,
>> >>> >
>> >>> > 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> >>> >> How about using Velocity as Preprocessor.
>> >>> >> You could put all logging Statements between an
>> >>> >> //#if ($debug)
>> >>> >> and
>> >>> >> //#end
>> >>> >> So the Code would stay pure java, and the debug Version could be
>> >>> >> compiled
>> >>> >> without a Preprocessor.
>> >>> >
>> >>> > Is this something better than just using java in the same way?
>> >>> >
>> >>> > static final boolean DEBUG = false;
>> >>> > if (DEBUG) {
>> >>> >// wiped away by java compiler
>> >>> >log("my useful log message");
>> >>> > }
>> >>> >
>> >>> > The problem of your approach as well as the above example is the
>> >>> > additional syntax you need to add to each log call.
>> >>> >
>> >>> > However, I like the general idea of using Velocity as a Java
>> >>> preprocessor
>> >>> > :)


--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Geir Magnusson Jr


Alexei Zakharov wrote:
>> Where do we have #foreach in our code?
> 
> I suppose nowhere currently. I mean we will need to define additional
> coding rules to avoid using of such strings in the future.

Why?  velocity does a reasonable job at figuring out VTL-like things
that aren't VTL...

geir

> 
>> (who wrote a significant portion of velocity...)
> 
> Really? I had no idea about that :))
> 
> 
> 2006/6/2, Geir Magnusson Jr <[EMAIL PROTECTED]>:
>> Prove it.
>>
>> geir
>>
>> (who wrote a significant portion of velocity...)
>>
>> Soeren Strassfeld wrote:
>> > That´s true, of course!
>> >
>> > Alexei Zakharov schrieb:
>> >> I worry about the situation when we got something Velocity-like in
>> >> java code. Strings like "#foreach" or smth. like it in comments. This
>> >> will probably break the V. compiler.
>> >>
>> >> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> >>> Hi Alexei,
>> >>>
>> >>> I think the result in both examples is quite the same, I just liked
>> >>> the Idea to just add java comments to the code, so you don´t
>> >>> need a precompiler as long as you build the classlib with logging
>> >>> statements.
>> >>>
>> >>> Cheers,
>> >>>  Soeren
>> >>>
>> >>> Alexei Zakharov schrieb:
>> >>> > Hi Soeren,
>> >>> >
>> >>> > 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> >>> >> How about using Velocity as Preprocessor.
>> >>> >> You could put all logging Statements between an
>> >>> >> //#if ($debug)
>> >>> >> and
>> >>> >> //#end
>> >>> >> So the Code would stay pure java, and the debug Version could be
>> >>> >> compiled
>> >>> >> without a Preprocessor.
>> >>> >
>> >>> > Is this something better than just using java in the same way?
>> >>> >
>> >>> > static final boolean DEBUG = false;
>> >>> > if (DEBUG) {
>> >>> >// wiped away by java compiler
>> >>> >log("my useful log message");
>> >>> > }
>> >>> >
>> >>> > The problem of your approach as well as the above example is the
>> >>> > additional syntax you need to add to each log call.
>> >>> >
>> >>> > However, I like the general idea of using Velocity as a Java
>> >>> preprocessor
>> >>> > :)
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Alexei Zakharov

Where do we have #foreach in our code?


I suppose nowhere currently. I mean we will need to define additional
coding rules to avoid using of such strings in the future.


(who wrote a significant portion of velocity...)


Really? I had no idea about that :))


2006/6/2, Geir Magnusson Jr <[EMAIL PROTECTED]>:

Prove it.

geir

(who wrote a significant portion of velocity...)

Soeren Strassfeld wrote:
> That´s true, of course!
>
> Alexei Zakharov schrieb:
>> I worry about the situation when we got something Velocity-like in
>> java code. Strings like "#foreach" or smth. like it in comments. This
>> will probably break the V. compiler.
>>
>> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>> Hi Alexei,
>>>
>>> I think the result in both examples is quite the same, I just liked
>>> the Idea to just add java comments to the code, so you don´t
>>> need a precompiler as long as you build the classlib with logging
>>> statements.
>>>
>>> Cheers,
>>>  Soeren
>>>
>>> Alexei Zakharov schrieb:
>>> > Hi Soeren,
>>> >
>>> > 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>> >> How about using Velocity as Preprocessor.
>>> >> You could put all logging Statements between an
>>> >> //#if ($debug)
>>> >> and
>>> >> //#end
>>> >> So the Code would stay pure java, and the debug Version could be
>>> >> compiled
>>> >> without a Preprocessor.
>>> >
>>> > Is this something better than just using java in the same way?
>>> >
>>> > static final boolean DEBUG = false;
>>> > if (DEBUG) {
>>> >// wiped away by java compiler
>>> >log("my useful log message");
>>> > }
>>> >
>>> > The problem of your approach as well as the above example is the
>>> > additional syntax you need to add to each log call.
>>> >
>>> > However, I like the general idea of using Velocity as a Java
>>> preprocessor
>>> > :)


--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Geir Magnusson Jr
I looks like it did exactly what you told it to do :)

geir


Soeren Strassfeld wrote:
> At least, you have to be very careful.
> Just had a simple test
> where
>  public static void main(String[] args){
>  //#if (true)
>System.out.println("logging");
>  //#end
>  }
> was merged to
>  public static void main(String[] args){
>  //System.out.println("logging");
>  //  }
> 
> Soeren
> 
> (who thanks Geir every day for velocity ;)
> 
> Geir Magnusson Jr schrieb:
>> Prove it.
>>
>> geir
>>
>> (who wrote a significant portion of velocity...)
>>
>>
>>
>> Soeren Strassfeld wrote:
>>  
>>> That´s true, of course!
>>>
>>> Alexei Zakharov schrieb:
>>>
 I worry about the situation when we got something Velocity-like in
 java code. Strings like "#foreach" or smth. like it in comments. This
 will probably break the V. compiler.

 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
  
> Hi Alexei,
>
> I think the result in both examples is quite the same, I just liked
> the Idea to just add java comments to the code, so you don´t
> need a precompiler as long as you build the classlib with logging
> statements.
>
> Cheers,
>  Soeren
>
> Alexei Zakharov schrieb:
>
>> Hi Soeren,
>>
>> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>  
>>> How about using Velocity as Preprocessor.
>>> You could put all logging Statements between an
>>> //#if ($debug)
>>> and
>>> //#end
>>> So the Code would stay pure java, and the debug Version could be
>>> compiled
>>> without a Preprocessor.
>>> 
>> Is this something better than just using java in the same way?
>>
>> static final boolean DEBUG = false;
>> if (DEBUG) {
>>// wiped away by java compiler
>>log("my useful log message");
>> }
>>
>> The problem of your approach as well as the above example is the
>> additional syntax you need to add to each log call.
>>
>> However, I like the general idea of using Velocity as a Java
>>   
> preprocessor
>
>> :)
>>
>>   
   
>>> -
>>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>> 
>>
>> -
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>   
> 
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-02 Thread Soeren Strassfeld

At least, you have to be very careful.
Just had a simple test
where
 public static void main(String[] args){
 //#if (true)
   System.out.println("logging");
 //#end
 }
was merged to
 public static void main(String[] args){
 //System.out.println("logging");
 //  }

Soeren

(who thanks Geir every day for velocity ;)

Geir Magnusson Jr schrieb:

Prove it.

geir

(who wrote a significant portion of velocity...)



Soeren Strassfeld wrote:
  

That´s true, of course!

Alexei Zakharov schrieb:


I worry about the situation when we got something Velocity-like in
java code. Strings like "#foreach" or smth. like it in comments. This
will probably break the V. compiler.

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
  

Hi Alexei,

I think the result in both examples is quite the same, I just liked
the Idea to just add java comments to the code, so you don´t
need a precompiler as long as you build the classlib with logging
statements.

Cheers,
 Soeren

Alexei Zakharov schrieb:


Hi Soeren,

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
  

How about using Velocity as Preprocessor.
You could put all logging Statements between an
//#if ($debug)
and
//#end
So the Code would stay pure java, and the debug Version could be
compiled
without a Preprocessor.


Is this something better than just using java in the same way?

static final boolean DEBUG = false;
if (DEBUG) {
   // wiped away by java compiler
   log("my useful log message");
}

The problem of your approach as well as the above example is the
additional syntax you need to add to each log call.

However, I like the general idea of using Velocity as a Java
  

preprocessor


:)

  
  

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


  



-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Geir Magnusson Jr
Prove it.

geir

(who wrote a significant portion of velocity...)



Soeren Strassfeld wrote:
> That´s true, of course!
> 
> Alexei Zakharov schrieb:
>> I worry about the situation when we got something Velocity-like in
>> java code. Strings like "#foreach" or smth. like it in comments. This
>> will probably break the V. compiler.
>>
>> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>> Hi Alexei,
>>>
>>> I think the result in both examples is quite the same, I just liked
>>> the Idea to just add java comments to the code, so you don´t
>>> need a precompiler as long as you build the classlib with logging
>>> statements.
>>>
>>> Cheers,
>>>  Soeren
>>>
>>> Alexei Zakharov schrieb:
>>> > Hi Soeren,
>>> >
>>> > 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>>> >> How about using Velocity as Preprocessor.
>>> >> You could put all logging Statements between an
>>> >> //#if ($debug)
>>> >> and
>>> >> //#end
>>> >> So the Code would stay pure java, and the debug Version could be
>>> >> compiled
>>> >> without a Preprocessor.
>>> >
>>> > Is this something better than just using java in the same way?
>>> >
>>> > static final boolean DEBUG = false;
>>> > if (DEBUG) {
>>> >// wiped away by java compiler
>>> >log("my useful log message");
>>> > }
>>> >
>>> > The problem of your approach as well as the above example is the
>>> > additional syntax you need to add to each log call.
>>> >
>>> > However, I like the general idea of using Velocity as a Java
>>> preprocessor
>>> > :)
>>> >
>>
>>
> 
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Geir Magnusson Jr


Alexei Zakharov wrote:
> I worry about the situation when we got something Velocity-like in
> java code. Strings like "#foreach" or smth. like it in comments. This
> will probably break the V. compiler.
> 

Hey now

Where do we have #foreach in our code?

geir


> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> Hi Alexei,
>>
>> I think the result in both examples is quite the same, I just liked
>> the Idea to just add java comments to the code, so you don´t
>> need a precompiler as long as you build the classlib with logging
>> statements.
>>
>> Cheers,
>>  Soeren
>>
>> Alexei Zakharov schrieb:
>> > Hi Soeren,
>> >
>> > 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> >> How about using Velocity as Preprocessor.
>> >> You could put all logging Statements between an
>> >> //#if ($debug)
>> >> and
>> >> //#end
>> >> So the Code would stay pure java, and the debug Version could be
>> >> compiled
>> >> without a Preprocessor.
>> >
>> > Is this something better than just using java in the same way?
>> >
>> > static final boolean DEBUG = false;
>> > if (DEBUG) {
>> >// wiped away by java compiler
>> >log("my useful log message");
>> > }
>> >
>> > The problem of your approach as well as the above example is the
>> > additional syntax you need to add to each log call.
>> >
>> > However, I like the general idea of using Velocity as a Java
>> preprocessor
>> > :)
>> >
> 
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Soeren Strassfeld

That´s true, of course!

Alexei Zakharov schrieb:

I worry about the situation when we got something Velocity-like in
java code. Strings like "#foreach" or smth. like it in comments. This
will probably break the V. compiler.

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:

Hi Alexei,

I think the result in both examples is quite the same, I just liked
the Idea to just add java comments to the code, so you don´t
need a precompiler as long as you build the classlib with logging
statements.

Cheers,
 Soeren

Alexei Zakharov schrieb:
> Hi Soeren,
>
> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> How about using Velocity as Preprocessor.
>> You could put all logging Statements between an
>> //#if ($debug)
>> and
>> //#end
>> So the Code would stay pure java, and the debug Version could be
>> compiled
>> without a Preprocessor.
>
> Is this something better than just using java in the same way?
>
> static final boolean DEBUG = false;
> if (DEBUG) {
>// wiped away by java compiler
>log("my useful log message");
> }
>
> The problem of your approach as well as the above example is the
> additional syntax you need to add to each log call.
>
> However, I like the general idea of using Velocity as a Java 
preprocessor

> :)
>






-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Alexei Zakharov

I worry about the situation when we got something Velocity-like in
java code. Strings like "#foreach" or smth. like it in comments. This
will probably break the V. compiler.

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:

Hi Alexei,

I think the result in both examples is quite the same, I just liked
the Idea to just add java comments to the code, so you don´t
need a precompiler as long as you build the classlib with logging
statements.

Cheers,
 Soeren

Alexei Zakharov schrieb:
> Hi Soeren,
>
> 2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:
>> How about using Velocity as Preprocessor.
>> You could put all logging Statements between an
>> //#if ($debug)
>> and
>> //#end
>> So the Code would stay pure java, and the debug Version could be
>> compiled
>> without a Preprocessor.
>
> Is this something better than just using java in the same way?
>
> static final boolean DEBUG = false;
> if (DEBUG) {
>// wiped away by java compiler
>log("my useful log message");
> }
>
> The problem of your approach as well as the above example is the
> additional syntax you need to add to each log call.
>
> However, I like the general idea of using Velocity as a Java preprocessor
> :)
>



--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Soeren Strassfeld

Hi Alexei,

I think the result in both examples is quite the same, I just liked
the Idea to just add java comments to the code, so you don´t
need a precompiler as long as you build the classlib with logging
statements.

Cheers,
Soeren

Alexei Zakharov schrieb:

Hi Soeren,

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:

How about using Velocity as Preprocessor.
You could put all logging Statements between an
//#if ($debug)
and
//#end
So the Code would stay pure java, and the debug Version could be 
compiled

without a Preprocessor.


Is this something better than just using java in the same way?

static final boolean DEBUG = false;
if (DEBUG) {
   // wiped away by java compiler
   log("my useful log message");
}

The problem of your approach as well as the above example is the
additional syntax you need to add to each log call.

However, I like the general idea of using Velocity as a Java preprocessor
:)




-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Geir Magnusson Jr


Stefano Mazzocchi wrote:

> 
> Maybe we should start thinking more with that in mind and think about
> scratching our own itches in terms of development... we might find some
> serious innovation on the way to there.
> 

I think the disagreement boils down to defining the "itch".  I'm not
interested in the overhead because while we will own the VM for our
distro, it's still overhead and additionally, we want others w/ VMs to
use our classlibrary too (like Sun, BEA, IBM, Apple... )

I'm going to dork around w/ aspects to see if we can make the addition
of debugging a pre-processing step used by people that want to debug...

geir

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Stefano Mazzocchi
Vladimir Gorr wrote:
> We need to remember the class file transformation via BCEL implies the
> performance degradation at load-time.
> IMO using the source code like this
> 
> *static final boolean DEBUG = false;
> if (DEBUG) {
>   // wiped away by java compiler
>   log("my useful log message");
> }
> *
> will give better performance but demands the additional efforts for the
> re-factoring the source code.

People,

in case you have forgotten, we are writing a virtual machine, which
means we can practically do anything, including externally triggered
runtime bytecode modification. Aspect injection, whatever.

I've seen a presentation of JRockit's management console and they seem
to be able to do stuff like that (I need to play more)

As much as I'm a proud printf kind of guy, I never had the luxury of
owning the keys to the internals of the machine that ran my code.

Maybe we should start thinking more with that in mind and think about
scratching our own itches in terms of development... we might find some
serious innovation on the way to there.

-- 
Stefano.


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Stefano Mazzocchi
Alexei Zakharov wrote:

> However, I like the general idea of using Velocity as a Java preprocessor
> :)

I really don't.

-- 
Stefano.


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Vladimir Gorr

We need to remember the class file transformation via BCEL implies the
performance degradation at load-time.
IMO using the source code like this

*static final boolean DEBUG = false;
if (DEBUG) {
  // wiped away by java compiler
  log("my useful log message");
}
*
will give better performance but demands the additional efforts for the
re-factoring the source code.

Thanks,
Vladimir.

On 6/1/06, Anton Luht <[EMAIL PROTECTED]> wrote:


Alexei,

I've suggested BCEL but not ASM because it is an Apache product and
its license certainly fits Harmony and the author tells that he used
BCEL before.

I've used it a couple of times and everything worked just fine. No
code corruptions ever happened. It is mentioned in Sun Developer
Network JavaOne Online Technical Sessions. Seems like it's a mature
tool (even judging by version - 5.1 :) ).

On 6/1/06, Alexei Zakharov <[EMAIL PROTECTED]> wrote:
> As far as I understand they use ObjectWEb ASM rather than BCEL in
> their example. But in any case, this approach implies trust in these
> code-manipulation libraries. Does it stable enough? Can't it produce
> corrupted byte-code?

--
Regards,
Anton Luht,
Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [classlib] logging from within our implementation

2006-06-01 Thread Anton Luht

Alexei,

I've suggested BCEL but not ASM because it is an Apache product and
its license certainly fits Harmony and the author tells that he used
BCEL before.

I've used it a couple of times and everything worked just fine. No
code corruptions ever happened. It is mentioned in Sun Developer
Network JavaOne Online Technical Sessions. Seems like it's a mature
tool (even judging by version - 5.1 :) ).

On 6/1/06, Alexei Zakharov <[EMAIL PROTECTED]> wrote:

As far as I understand they use ObjectWEb ASM rather than BCEL in
their example. But in any case, this approach implies trust in these
code-manipulation libraries. Does it stable enough? Can't it produce
corrupted byte-code?


--
Regards,
Anton Luht,
Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Alexei Zakharov

As far as I understand they use ObjectWEb ASM rather than BCEL in
their example. But in any case, this approach implies trust in these
code-manipulation libraries. Does it stable enough? Can't it produce
corrupted byte-code?

2006/6/1, Geir Magnusson Jr <[EMAIL PROTECTED]>:


Anton Luht wrote:
> It is possible to remove all calls to logging below a certain level
> from .class files using BCEL:
> http://surguy.net/articles/removing-log-messages.xml . In this example
> logging is removed on fly when class is loaded, but this tool can be
> run against class files in the process of building release version.
> For example, debug version can contain all logging and release - only
> errors. This approach has one disadvantage: it is non-standard and
> looks like a dirty hack :)

Yah.  I'd rather see us add the logging this way rather than removing
it, using annotations or aspects or something... I'll try to experiment
with this tomorrow.


---
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-06-01 Thread Alexei Zakharov

Hi Soeren,

2006/6/1, Soeren Strassfeld <[EMAIL PROTECTED]>:

How about using Velocity as Preprocessor.
You could put all logging Statements between an
//#if ($debug)
and
//#end
So the Code would stay pure java, and the debug Version could be compiled
without a Preprocessor.


Is this something better than just using java in the same way?

static final boolean DEBUG = false;
if (DEBUG) {
   // wiped away by java compiler
   log("my useful log message");
}

The problem of your approach as well as the above example is the
additional syntax you need to add to each log call.

However, I like the general idea of using Velocity as a Java preprocessor
:)

--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Geir Magnusson Jr



Anton Luht wrote:

It is possible to remove all calls to logging below a certain level
from .class files using BCEL:
http://surguy.net/articles/removing-log-messages.xml . In this example
logging is removed on fly when class is loaded, but this tool can be
run against class files in the process of building release version.
For example, debug version can contain all logging and release - only
errors. This approach has one disadvantage: it is non-standard and
looks like a dirty hack :)



Yah.  I'd rather see us add the logging this way rather than removing 
it, using annotations or aspects or something... I'll try to experiment 
with this tomorrow.


I really hate discussing logging.  It's impossible to have a short 
conversation where everyone agrees.  Yoko, the CORBA project in the 
incubator, is going through a very similar issue...


geir


On 31 May 2006 19:24:18 +0700, Egor Pasko <[EMAIL PROTECTED]> wrote:

On the 0x17A day of Apache Harmony Alex Blewitt wrote:
> Moral 1: saying 'It's OK, debug logging can be turned off and
> log.debug(msg) is inexpensive' is a lie. If you really feel the need
> for sprinkling debug statements everywhere (and I'm with others in
> using a good IDE to track down problems) then surround every debug
> with if (log.debugEnabled()) { log.debug(msg) }. Yes, it has the same
> effect, but at least you don't bother wasting the calcuation of the
> message itself, and in this case, even a dozy JIT can optimise it
> away.

+1 for log.debugEnabled() :)




-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread robert burrell donkin

On 5/30/06, Gregory Shimansky <[EMAIL PROTECTED]> wrote:


On Wednesday 31 May 2006 00:46 Ivan Volosyuk wrote:
> > Any good behaving optimizing runtime would inline empty methods into
> > nothing and therefore no performance impact would be made.
>
> Excelent! This is much better and simplier.
>
> public final class CLogger {
>public static void msg(Object... ) {..}
> }
>
> Hmm, I see one drawback of this approach: arguments will still be
> evaluated even if logger itself will be empty. So, some care needed to
> maintain performance with such logger.

If dead code elimination is done after inlining, then most likely code
like
string concatination and stuff like that would be deleted as well.



1 IMO ceki's next generation  bridging API has the signatures much closer to
being right than any other lightweight API i know of. one idea is that you
provide methods with extra parameters that are concatinated in the method
(if needed). for example:

debug(Object message)
debug(Object message, Object parameterOne)
debug(Object message, Object parameterOne, Object parameterTwo)
debug(Object message, Object parameterOne, Object parameterTwo, Object
parameterThree)

for a project such as harmony, it seems reasonable (to me) to restrict the
allowed logging calls to a limited number of parameters. developers should
remove any unreasonable calls before checking. so this solution might be a
good match.


2 for harmony, i'd consider not using a logging class at all. add private do
nothing template methods to any class that is likely to need logging. if a
developer needs to turn on logging for a class they run an enhancer to wire
those calls to an appropriate logging architecture.

for example:

public class DoSomethingCool {

  public void whatever(What what, Ever ever) {
 debug("This is really complex!", what, ever);
 ...
  }

  private debug(Object message) {}
  private debug(Object message, Object parameterOne) {}
  private debug(Object message, Object parameterOne, Object parameterTwo)
{}
  private debug(Object message, Object parameterOne, Object parameterTwo,
Object parameterThree) {}
}

- robert


Re: [classlib] logging from within our implementation

2006-05-31 Thread Soeren Strassfeld

Hi all,

How about using Velocity as Preprocessor.
You could put all logging Statements between an
//#if ($debug)
and
//#end
So the Code would stay pure java, and the debug Version could be compiled
without a Preprocessor.

Regards,
Soeren


Anton Luht schrieb:

It is possible to remove all calls to logging below a certain level
from .class files using BCEL:
http://surguy.net/articles/removing-log-messages.xml . In this example
logging is removed on fly when class is loaded, but this tool can be
run against class files in the process of building release version.
For example, debug version can contain all logging and release - only
errors. This approach has one disadvantage: it is non-standard and
looks like a dirty hack :)

On 31 May 2006 19:24:18 +0700, Egor Pasko <[EMAIL PROTECTED]> wrote:

On the 0x17A day of Apache Harmony Alex Blewitt wrote:
> Moral 1: saying 'It's OK, debug logging can be turned off and
> log.debug(msg) is inexpensive' is a lie. If you really feel the need
> for sprinkling debug statements everywhere (and I'm with others in
> using a good IDE to track down problems) then surround every debug
> with if (log.debugEnabled()) { log.debug(msg) }. Yes, it has the same
> effect, but at least you don't bother wasting the calcuation of the
> message itself, and in this case, even a dozy JIT can optimise it
> away.

+1 for log.debugEnabled() :)





-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Anton Luht

It is possible to remove all calls to logging below a certain level
from .class files using BCEL:
http://surguy.net/articles/removing-log-messages.xml . In this example
logging is removed on fly when class is loaded, but this tool can be
run against class files in the process of building release version.
For example, debug version can contain all logging and release - only
errors. This approach has one disadvantage: it is non-standard and
looks like a dirty hack :)

On 31 May 2006 19:24:18 +0700, Egor Pasko <[EMAIL PROTECTED]> wrote:

On the 0x17A day of Apache Harmony Alex Blewitt wrote:
> Moral 1: saying 'It's OK, debug logging can be turned off and
> log.debug(msg) is inexpensive' is a lie. If you really feel the need
> for sprinkling debug statements everywhere (and I'm with others in
> using a good IDE to track down problems) then surround every debug
> with if (log.debugEnabled()) { log.debug(msg) }. Yes, it has the same
> effect, but at least you don't bother wasting the calcuation of the
> message itself, and in this case, even a dozy JIT can optimise it
> away.

+1 for log.debugEnabled() :)


--
Regards,
Anton Luht,
Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Egor Pasko
On the 0x17A day of Apache Harmony Alex Blewitt wrote:
> Moral 1: saying 'It's OK, debug logging can be turned off and
> log.debug(msg) is inexpensive' is a lie. If you really feel the need
> for sprinkling debug statements everywhere (and I'm with others in
> using a good IDE to track down problems) then surround every debug
> with if (log.debugEnabled()) { log.debug(msg) }. Yes, it has the same
> effect, but at least you don't bother wasting the calcuation of the
> message itself, and in this case, even a dozy JIT can optimise it
> away.

+1 for log.debugEnabled() :)

to optimize away log.debug(obj) JIT should perform devirtualization for
toString(), with escape analysis. That may turn out to be too
expensive. So, a reasonable JIT may optimize it some day, but not
always :)

BTW, highly optimizing JIT from the DRLVM contribution (=Jitrino.OPT)
does *not* perform escape analysis yet. That resides in TODO list :)

In fact, all-pure-java annotations may help to completely solve the
issue. There may be hints for JIT that it is safe to optimize some
code in a certain way. In release mode some pieces of code can be
annotated for deletion. Is it a good practice to support annotations
of that kind in Harmony JITs? Or is it a dirty hack? :)

-- 
Egor Pasko, Intel Managed Runtime Division


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Geir Magnusson Jr



Alex Blewitt wrote:


They removed the debugging statements, and it ran so fast that they
discovered all kinds of race conditions that they hadn't designed for.
So they had to put the debugging statements back in to slow it down
before shipping it to the customer :-) Mind you, I expect that
marketing would have jumped on the bandwaggon with 2.0! Much faster
than 1.0! but I didn't hang around long enough there to find out :-)


I ran into this same exact problem years ago working on one of the first 
multi-processor direct-to-disk digital audio recording/editing systems. 
 We inherited the halfway done OS from someone and our job was to 
finish it.


It worked ok but had a lot of yammering to the console, so we knocked 
out all the debug printfs.


It stopped working. (There is no "close enough" when feeding audio to a 
D/A... if you are late, you are late and you can hear it...)


There were two of us doing it as a consulting project, and I can to this 
day remember the look of utter fear in my partner's eyes as we had about 
3 weeks left to the biggest tradeshow of the year.


We eventually got it working, but it was a very valuable and painful lesson.

geir

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Geir Magnusson Jr



Chris Gray wrote:



It's probably also not a good idea to rely too much on JIT optimisations, 
given that Harmony should run on a number of VMs and not all of these will 
have a fully optimising JIT in all circumstances. It should be possible to 
compile the class libraries with or without logging.


Yes - that was my thought which I was hoping someone would bring up and 
I wouldn't have to :)


geir


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-31 Thread Alex Blewitt

On 31/05/06, Chris Gray <[EMAIL PROTECTED]> wrote:

On Tuesday 30 May 2006 23:38, Alex Blewitt wrote:
>
> Not necessarily. Evaluation of arguments may have side-effects, and
> therefore even if the call to the logging gets optimised away, the
> evaluation may not be.

You're right, and the more I look at it the less likely it seems to me that
the evaluation of parameters will be optimised away. To start with string
concatenation: the expression ("hello " + "world") has no side-effects...


True. That's why a decent logging API doesn't just take a single
String, but can take an arbitrary number of them (or even better,
Objects). So you'd be able to do logger.info(["Hello","World"]); and
only when the logging is being performed would it need to do the
concatenation (or more likely, just two print statements). The only
problem is you'd still have the construction time of the array; I
don't know if the VARARGs implementation would solve that.

Even better, if it takes objects, you don't even need to do the
.toString() operation until you know you need it as a string.

On 31/05/06 Someone Else Wrote:

j.u.l logging is well designed, and if used correctly, has minimal performance
penalty, since unused logging directives are simply wiped out by optmimizing 
Jit.


I don't think anyone I've met thinks that j.u.l logging is well
designed. It was a bodge job that took some ideas from log4j and then
did its own thing. And unlike log4j, it could only be run on 1.4+
systems. And both of those tend to prefer having a single String
message in their arguments, with the result that everyone does a
string concatenation in their logging message (although there is a
parameterised message format, it doesn't tend to be used because it's
more verbose in calling code).

And the logging directives are *not* wiped out by an optimizing Jit.
Even if it's intelligent enough to know that the method it's calling
is a no-op, it can't guarantee that the evaluation of the arguments
have no side effects. I worked on a project once where there were
debug log statements liberally sprinkled through the code, where
messages (often large ones, as toString() are wont to create). The
issue was, the system ran like a dog even when debug logging was
disabled. The problem was that even though the log.debug(String)
wasn't doing anything, the largeObject.toString() *was* and eating up
a bunch of memory/processor for no good reason.

They removed the debugging statements, and it ran so fast that they
discovered all kinds of race conditions that they hadn't designed for.
So they had to put the debugging statements back in to slow it down
before shipping it to the customer :-) Mind you, I expect that
marketing would have jumped on the bandwaggon with 2.0! Much faster
than 1.0! but I didn't hang around long enough there to find out :-)

You've also got to take into account that no matter how clever people
think they are when using a StringBuffer in a toString() method, as
soon as you get a collection of objects, you end up with n+1
StringBuffers (one for each object's toString, and one for the
collection itsef).

If you're ever doing performant logging, it's much better to have a
toString(StringBuffer) method that allows you to pass-through a
StringBuffer into the object you want. You can even stub the
toString() to create a new StringBuffer and pass it into the
parameterised version to save doing it in many places.

Moral 1: saying 'It's OK, debug logging can be turned off and
log.debug(msg) is inexpensive' is a lie. If you really feel the need
for sprinkling debug statements everywhere (and I'm with others in
using a good IDE to track down problems) then surround every debug
with if (log.debugEnabled()) { log.debug(msg) }. Yes, it has the same
effect, but at least you don't bother wasting the calcuation of the
message itself, and in this case, even a dozy JIT can optimise it
away.

Moral 2: logging is expensive; toString() doubly so. Much better to
pass in an object (whether that's a StringBuffer or an OutputStream or
a Writer doesn't really matter) so that the toString() method can
append information as it goes, rather than creating lots of strings as
is the case with any kind of compound object.

Moral 3: If you're going to design a multi-threaded system, think
about race conditions first :-)

Alex.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Chris Gray
On Tuesday 30 May 2006 23:38, Alex Blewitt wrote:
> On 30/05/06, Chris Gray <[EMAIL PROTECTED]> wrote:
> > If the implementation is an empty method and is final, a straightforward
> > static flow analysis will show that the evaluation of the arguments can
> > also be optimised away.
>
> Not necessarily. Evaluation of arguments may have side-effects, and
> therefore even if the call to the logging gets optimised away, the
> evaluation may not be.

You're right, and the more I look at it the less likely it seems to me that 
the evaluation of parameters will be optimised away. To start with string 
concatenation: the expression ("hello " + "world") has no side-effects, but 
the optimiser has to perform an escape analysis in order to recognise that 
new StringBuffer("hello ").append("world")has none. (StringBuilder I guess 
these days). And in ("Frobbing the " + foo), if (as is likely) the type of 
foo is a non-final class or interface, all bets are off; a subclass could 
override the toString() method to have all kind of side-effects. Logging 
("Connecting to " + remotehost.getHostName()) certainly has side-effects.

It's probably also not a good idea to rely too much on JIT optimisations, 
given that Harmony should run on a number of VMs and not all of these will 
have a fully optimising JIT in all circumstances. It should be possible to 
compile the class libraries with or without logging.

Chris

-- 
Chris Gray/k/ Embedded Java Solutions  BE0503765045
Embedded & Mobile Java, OSGihttp://www.k-embedded-java.com/
[EMAIL PROTECTED] +32 3 216 0369


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Mikhail Loenko

I have a question.

Consider scenario:

JRE has java.security configuration file that includes list of
providers. At some
(usually start-up) time this file is being loaded and parsed. Then providers are
loaded too and list of available algorithms is created.

Some algorithms or even whole providers might require native libraries, those
libraries could be unavailable at the moment of load attempt.

If the libraries are unavailable we have the following options:
1. Do not include algorithm that requires unavailable libraries into the list
of available algorithms.
2. Do not include whole provider
3. Terminate VM

It is reasonabe that 1&2 are supplemented with some logging.
RI seems to do #2 plus logging.

What should we do if logging is prohibited?

Thanks,
Mikhail

2006/5/31, Geir Magnusson Jr <[EMAIL PROTECTED]>:



Tim Ellison wrote:
> Geir Magnusson Jr wrote:
>>> The logging info being proposed is developer-oriented.  I hope that
>>> people are not expecting our users to understand our developer trace
>>> info -- we, as developers, have better tools than printf to figure out
>>> what is happening.
>> I have to admit that I don't agree w/ "better" as a universally general
>> statement,
>
> Well I guess it is a POV, but give me a java-aware debugger and trace
> tools over printf any day.

To be clear [again], don't get caught on "printf", because no one is
advocating that, I believe.

geir


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: [classlib] logging from within our implementation

2006-05-30 Thread Zakharov, Vasily M

"At the end we are going to dump any logging debris that have any 
performance or other burden like increase in dependencies"

It's Open Source. There's no "end". The bugs will continue to get found,
and new features and optimizations will appear from time to time.
And putting them in would require checking and debugging, and good
logging
will help at these stages too.

j.u.l logging is well designed, and if used correctly, has minimal
performance
penalty, since unused logging directives are simply wiped out by
optmimizing Jit.

 Vasily


-Original Message-
From: Geir Magnusson Jr [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, May 30, 2006 10:59 PM
To: harmony-dev@incubator.apache.org
Subject: Re: [classlib] logging from within our implementation

Just to be clear, I certainly sympathize with Tim and support getting 
rid of implementation debug logging in the long term.

Maybe the way to compromise/phrase it is agree that when a package is 
done, we will pitch all the logging?  I can see why having logging 
around while things are being developed is helpful, and committing to 
SVN is ok since we want people to commit "early and often, and having to

pull out logging would be a disincentive for someone working on 
something big.

Does this help?

"At the end we are going to dump any logging debris that have any 
performance or other burden like increase in dependencies"

geir


Geir Magnusson Jr wrote:
> 
> 
> Tim Ellison wrote:
>> Geir Magnusson Jr wrote:
>>> Seems like there is an important issue here, but the discussion
can't
>>> seem to escape out of the thicket of the example.
>>>
>>> 1) Should we allow any logging from within the classlibrary?
>>
>> Just in case there was any doubt from my earlier postings...
>>
>> I think we should not be explicitly logging debug info as part of our
>> class library implementation.
> 
> In any form?
> 
>>> 2) How should we do it?
>>>
>>> There are a bunch of ways for the second question...  using j.u.l,
using
>>>  IOC and injecting our own logging target to reduce dependencies and
>>> make people think before logging, using aspects?
>>
>> Both j.u.l and IoC would require code in the implementation to
perform
>> the logging actions (or check the guard).  Putting this logic
throughout
>> the class library will IMHO result in module coupling, code bloat and
>> overall performance degradation (or no logging!).
> 
> Right - that's why I was thinking of the latter.  Something that would

> have no runtime overhead, yet allow us to capture more information
other 
> than just execution path and stack values :)
>>
>> Adding logging statements is expecting the class library developer to
>> decide /a priori/ what debug|trace info is useful to the person
trying
>> to resolve a problem.  Existing debug|trace tools work with the
runtime
>> to figure out the pertinent information as you are interested in it.
>> (The only caveat being 'flight data recorder' type trace where the
trace
>> points are typically very low overhead and always on).
>>
>>> Comments?  We probably should try to get to a conclusion in
general...
>>
>> The logging info being proposed is developer-oriented.  I hope that
>> people are not expecting our users to understand our developer trace
>> info -- we, as developers, have better tools than printf to figure
out
>> what is happening.
> 
> I have to admit that I don't agree w/ "better" as a universally
general 
> statement, as debug statements can include information provided by the

> developer not immediately obvious.
> 
> Is there some kind of aspect framework we can use?  Then for 
> develeopers, they have to implicitly do something to get the stuff to 
> come out, it's not a runtime cost for anyone else, and the stuff stays

> in the codebase for use later?
> 
> geir
> 
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Alex Blewitt

On 30/05/06, Chris Gray <[EMAIL PROTECTED]> wrote:

If the implementation is an empty method and is final, a straightforward
static flow analysis will show that the evaluation of the arguments can also
be optimised away.


Not necessarily. Evaluation of arguments may have side-effects, and
therefore even if the call to the logging gets optimised away, the
evaluation may not be. It's better to have an array of Strings and let
the logger do the concatenation rather than have a single
Object/String and performing the concatenation, because then the
logger can do the concatenation through stream manipulation rather
than in-memory copying.

That said, I don't think there's a great benefit of having logging in
production code once it's complete, and I think that an aspect would
be a better way of compiling with debugging code in.

Alex.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Chris Gray
On Tuesday 30 May 2006 22:46, Ivan Volosyuk wrote:

> Hmm, I see one drawback of this approach: arguments will still be
> evaluated even if logger itself will be empty. So, some care needed to
> maintain performance with such logger.

If the implementation is an empty method and is final, a straightforward 
static flow analysis will show that the evaluation of the arguments can also 
be optimised away.

Chris

-- 
Chris Gray/k/ Embedded Java Solutions  BE0503765045
Embedded & Mobile Java, OSGihttp://www.k-embedded-java.com/
[EMAIL PROTECTED] +32 3 216 0369


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Gregory Shimansky
On Wednesday 31 May 2006 00:46 Ivan Volosyuk wrote:
> > Any good behaving optimizing runtime would inline empty methods into
> > nothing and therefore no performance impact would be made.
>
> Excelent! This is much better and simplier.
>
> public final class CLogger {
>public static void msg(Object... ) {..}
> }
>
> Hmm, I see one drawback of this approach: arguments will still be
> evaluated even if logger itself will be empty. So, some care needed to
> maintain performance with such logger.

If dead code elimination is done after inlining, then most likely code like 
string concatination and stuff like that would be deleted as well.

Disclaimer: I am not a compiler expert, so I may be wrong.

-- 
Gregory Shimansky, Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Ivan Volosyuk

2006/5/31, Gregory Shimansky <[EMAIL PROTECTED]>:

On Wednesday 31 May 2006 00:09 Ivan Volosyuk wrote:
> I am not sure, we can say someday: Yes, the code is absolutely bug
> free! Remove the logging!
>
> I have a suggestion, which can help leave logging in place while still
> having no impact on performance. The logging can be used for debuging
> of features and will be removed in release version. It require some
> changes to build system though.
>
> The idea is quite simple: we can use C preprocessor directives in java
> files. When building the preprocessor will be executed before java
> compiler (if the source-file's timestamp was changed). Thus we can
> have logger-free release builds and debug builds with full weight
> logging.

I have a simpler suggestion which doesn't require any tools foreign to java.

Make classlib debugging infrastructure internal class, not java.util.logging,
but an internal wrapper to classes in java.util.logging. And in release
version all its methods should be empty.

Any good behaving optimizing runtime would inline empty methods into nothing
and therefore no performance impact would be made.


Excelent! This is much better and simplier.

public final class CLogger {
  public static void msg(Object... ) {..}
}

Hmm, I see one drawback of this approach: arguments will still be
evaluated even if logger itself will be empty. So, some care needed to
maintain performance with such logger.
--
Ivan

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Gregory Shimansky
On Wednesday 31 May 2006 00:09 Ivan Volosyuk wrote:
> I am not sure, we can say someday: Yes, the code is absolutely bug
> free! Remove the logging!
>
> I have a suggestion, which can help leave logging in place while still
> having no impact on performance. The logging can be used for debuging
> of features and will be removed in release version. It require some
> changes to build system though.
>
> The idea is quite simple: we can use C preprocessor directives in java
> files. When building the preprocessor will be executed before java
> compiler (if the source-file's timestamp was changed). Thus we can
> have logger-free release builds and debug builds with full weight
> logging.

I have a simpler suggestion which doesn't require any tools foreign to java. 

Make classlib debugging infrastructure internal class, not java.util.logging, 
but an internal wrapper to classes in java.util.logging. And in release 
version all its methods should be empty.

Any good behaving optimizing runtime would inline empty methods into nothing 
and therefore no performance impact would be made.

-- 
Gregory Shimansky, Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Alexei Zakharov

I can agree that libraries like java.util and java.math probably will
not need any logging on the production stage. But some parts of the
classlib look more like applications rather than libraries. Providers
can be the good example. And logging for such apps can be considered
as part of UI. Let's say UI for advanced users. Such app will lost its
usefulness if logging is completely removed.

A lot of applications use logging. All enterprise servers extensively
use logging in spite of the fact that performance is very important
for j2ee.


2006/5/30, Gregory Shimansky <[EMAIL PROTECTED]>:

On Tuesday 30 May 2006 22:59 Tim Ellison wrote:
> >> The logging info being proposed is developer-oriented.  I hope that
> >> people are not expecting our users to understand our developer trace
> >> info -- we, as developers, have better tools than printf to figure out
> >> what is happening.
> >
> > I have to admit that I don't agree w/ "better" as a universally general
> > statement,
>
> Well I guess it is a POV, but give me a java-aware debugger and trace
> tools over printf any day.

Hello Tim

I don't want to start any flame, but want to show an example of an application
(yes it is not a class library, just a big java application) which has a lot
of logging hardcoded into it. It is Eclipse :)

Maybe java-aware debugger didn't help eclipse developers all the time as much
as tracing did.

--
Gregory Shimansky, Intel Middleware Products Division




--
Alexei Zakharov,
Intel Middleware Product Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Ivan Volosyuk

I am not sure, we can say someday: Yes, the code is absolutely bug
free! Remove the logging!

I have a suggestion, which can help leave logging in place while still
having no impact on performance. The logging can be used for debuging
of features and will be removed in release version. It require some
changes to build system though.

The idea is quite simple: we can use C preprocessor directives in java
files. When building the preprocessor will be executed before java
compiler (if the source-file's timestamp was changed). Thus we can
have logger-free release builds and debug builds with full weight
logging.

--
Ivan

2006/5/30, Alexey Petrenko <[EMAIL PROTECTED]>:

+1

Logging is useful on development and bugfixing stages. Since not all
the Harmony VMs fully supports JVMDI, JMVPI or JVMTI.
And it will be better to remove all the logging after finishing
development/bugfixing.



-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Geir Magnusson Jr



Tim Ellison wrote:

Geir Magnusson Jr wrote:

The logging info being proposed is developer-oriented.  I hope that
people are not expecting our users to understand our developer trace
info -- we, as developers, have better tools than printf to figure out
what is happening.

I have to admit that I don't agree w/ "better" as a universally general
statement,


Well I guess it is a POV, but give me a java-aware debugger and trace
tools over printf any day.


To be clear [again], don't get caught on "printf", because no one is 
advocating that, I believe.


geir


-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Gregory Shimansky
On Tuesday 30 May 2006 22:59 Tim Ellison wrote:
> >> The logging info being proposed is developer-oriented.  I hope that
> >> people are not expecting our users to understand our developer trace
> >> info -- we, as developers, have better tools than printf to figure out
> >> what is happening.
> >
> > I have to admit that I don't agree w/ "better" as a universally general
> > statement,
>
> Well I guess it is a POV, but give me a java-aware debugger and trace
> tools over printf any day.

Hello Tim

I don't want to start any flame, but want to show an example of an application 
(yes it is not a class library, just a big java application) which has a lot 
of logging hardcoded into it. It is Eclipse :)

Maybe java-aware debugger didn't help eclipse developers all the time as much 
as tracing did.

-- 
Gregory Shimansky, Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Alexey Petrenko

+1

Logging is useful on development and bugfixing stages. Since not all
the Harmony VMs fully supports JVMDI, JMVPI or JVMTI.
And it will be better to remove all the logging after finishing
development/bugfixing.

2006/5/30, Geir Magnusson Jr <[EMAIL PROTECTED]>:

Just to be clear, I certainly sympathize with Tim and support getting
rid of implementation debug logging in the long term.

Maybe the way to compromise/phrase it is agree that when a package is
done, we will pitch all the logging?  I can see why having logging
around while things are being developed is helpful, and committing to
SVN is ok since we want people to commit "early and often, and having to
pull out logging would be a disincentive for someone working on
something big.

Does this help?

"At the end we are going to dump any logging debris that have any
performance or other burden like increase in dependencies"

geir


Geir Magnusson Jr wrote:
>
>
> Tim Ellison wrote:
>> Geir Magnusson Jr wrote:
>>> Seems like there is an important issue here, but the discussion can't
>>> seem to escape out of the thicket of the example.
>>>
>>> 1) Should we allow any logging from within the classlibrary?
>>
>> Just in case there was any doubt from my earlier postings...
>>
>> I think we should not be explicitly logging debug info as part of our
>> class library implementation.
>
> In any form?
>
>>> 2) How should we do it?
>>>
>>> There are a bunch of ways for the second question...  using j.u.l, using
>>>  IOC and injecting our own logging target to reduce dependencies and
>>> make people think before logging, using aspects?
>>
>> Both j.u.l and IoC would require code in the implementation to perform
>> the logging actions (or check the guard).  Putting this logic throughout
>> the class library will IMHO result in module coupling, code bloat and
>> overall performance degradation (or no logging!).
>
> Right - that's why I was thinking of the latter.  Something that would
> have no runtime overhead, yet allow us to capture more information other
> than just execution path and stack values :)
>>
>> Adding logging statements is expecting the class library developer to
>> decide /a priori/ what debug|trace info is useful to the person trying
>> to resolve a problem.  Existing debug|trace tools work with the runtime
>> to figure out the pertinent information as you are interested in it.
>> (The only caveat being 'flight data recorder' type trace where the trace
>> points are typically very low overhead and always on).
>>
>>> Comments?  We probably should try to get to a conclusion in general...
>>
>> The logging info being proposed is developer-oriented.  I hope that
>> people are not expecting our users to understand our developer trace
>> info -- we, as developers, have better tools than printf to figure out
>> what is happening.
>
> I have to admit that I don't agree w/ "better" as a universally general
> statement, as debug statements can include information provided by the
> developer not immediately obvious.
>
> Is there some kind of aspect framework we can use?  Then for
> develeopers, they have to implicitly do something to get the stuff to
> come out, it's not a runtime cost for anyone else, and the stuff stays
> in the codebase for use later?
>
> geir
>
> -
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
Alexey A. Petrenko
Intel Middleware Products Division

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Geir Magnusson Jr
Just to be clear, I certainly sympathize with Tim and support getting 
rid of implementation debug logging in the long term.


Maybe the way to compromise/phrase it is agree that when a package is 
done, we will pitch all the logging?  I can see why having logging 
around while things are being developed is helpful, and committing to 
SVN is ok since we want people to commit "early and often, and having to 
pull out logging would be a disincentive for someone working on 
something big.


Does this help?

"At the end we are going to dump any logging debris that have any 
performance or other burden like increase in dependencies"


geir


Geir Magnusson Jr wrote:



Tim Ellison wrote:

Geir Magnusson Jr wrote:

Seems like there is an important issue here, but the discussion can't
seem to escape out of the thicket of the example.

1) Should we allow any logging from within the classlibrary?


Just in case there was any doubt from my earlier postings...

I think we should not be explicitly logging debug info as part of our
class library implementation.


In any form?


2) How should we do it?

There are a bunch of ways for the second question...  using j.u.l, using
 IOC and injecting our own logging target to reduce dependencies and
make people think before logging, using aspects?


Both j.u.l and IoC would require code in the implementation to perform
the logging actions (or check the guard).  Putting this logic throughout
the class library will IMHO result in module coupling, code bloat and
overall performance degradation (or no logging!).


Right - that's why I was thinking of the latter.  Something that would 
have no runtime overhead, yet allow us to capture more information other 
than just execution path and stack values :)


Adding logging statements is expecting the class library developer to
decide /a priori/ what debug|trace info is useful to the person trying
to resolve a problem.  Existing debug|trace tools work with the runtime
to figure out the pertinent information as you are interested in it.
(The only caveat being 'flight data recorder' type trace where the trace
points are typically very low overhead and always on).


Comments?  We probably should try to get to a conclusion in general...


The logging info being proposed is developer-oriented.  I hope that
people are not expecting our users to understand our developer trace
info -- we, as developers, have better tools than printf to figure out
what is happening.


I have to admit that I don't agree w/ "better" as a universally general 
statement, as debug statements can include information provided by the 
developer not immediately obvious.


Is there some kind of aspect framework we can use?  Then for 
develeopers, they have to implicitly do something to get the stuff to 
come out, it's not a runtime cost for anyone else, and the stuff stays 
in the codebase for use later?


geir

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Tim Ellison
Geir Magnusson Jr wrote:
> 
> 
> Tim Ellison wrote:
>> Geir Magnusson Jr wrote:
>>> Seems like there is an important issue here, but the discussion can't
>>> seem to escape out of the thicket of the example.
>>>
>>> 1) Should we allow any logging from within the classlibrary?
>>
>> Just in case there was any doubt from my earlier postings...
>>
>> I think we should not be explicitly logging debug info as part of our
>> class library implementation.
> 
> In any form?

Right -- no explicit logging in any form.

>>> 2) How should we do it?
>>>
>>> There are a bunch of ways for the second question...  using j.u.l, using
>>>  IOC and injecting our own logging target to reduce dependencies and
>>> make people think before logging, using aspects?
>>
>> Both j.u.l and IoC would require code in the implementation to perform
>> the logging actions (or check the guard).  Putting this logic throughout
>> the class library will IMHO result in module coupling, code bloat and
>> overall performance degradation (or no logging!).
> 
> Right - that's why I was thinking of the latter.

i.e. aspects?

> Something that would
> have no runtime overhead, yet allow us to capture more information other
> than just execution path and stack values :)
>>
>> Adding logging statements is expecting the class library developer to
>> decide /a priori/ what debug|trace info is useful to the person trying
>> to resolve a problem.  Existing debug|trace tools work with the runtime
>> to figure out the pertinent information as you are interested in it.
>> (The only caveat being 'flight data recorder' type trace where the trace
>> points are typically very low overhead and always on).
>>
>>> Comments?  We probably should try to get to a conclusion in general...
>>
>> The logging info being proposed is developer-oriented.  I hope that
>> people are not expecting our users to understand our developer trace
>> info -- we, as developers, have better tools than printf to figure out
>> what is happening.
> 
> I have to admit that I don't agree w/ "better" as a universally general
> statement,

Well I guess it is a POV, but give me a java-aware debugger and trace
tools over printf any day.

> as debug statements can include information provided by the
> developer not immediately obvious.

I would claim that there are tools that can provide the statement value
info 'live' rather than having to encode them into the class library
code directly.

> Is there some kind of aspect framework we can use?  Then for
> develeopers, they have to implicitly do something to get the stuff to
> come out, it's not a runtime cost for anyone else, and the stuff stays
> in the codebase for use later?

Aspects can be applied to the code without any explicit modification to
the class library logic, so there is nothing to 'stay in the codebase'.

Regards,
Tim

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Geir Magnusson Jr



Tim Ellison wrote:

Geir Magnusson Jr wrote:

Seems like there is an important issue here, but the discussion can't
seem to escape out of the thicket of the example.

1) Should we allow any logging from within the classlibrary?


Just in case there was any doubt from my earlier postings...

I think we should not be explicitly logging debug info as part of our
class library implementation.


In any form?


2) How should we do it?

There are a bunch of ways for the second question...  using j.u.l, using
 IOC and injecting our own logging target to reduce dependencies and
make people think before logging, using aspects?


Both j.u.l and IoC would require code in the implementation to perform
the logging actions (or check the guard).  Putting this logic throughout
the class library will IMHO result in module coupling, code bloat and
overall performance degradation (or no logging!).


Right - that's why I was thinking of the latter.  Something that would 
have no runtime overhead, yet allow us to capture more information other 
than just execution path and stack values :)


Adding logging statements is expecting the class library developer to
decide /a priori/ what debug|trace info is useful to the person trying
to resolve a problem.  Existing debug|trace tools work with the runtime
to figure out the pertinent information as you are interested in it.
(The only caveat being 'flight data recorder' type trace where the trace
points are typically very low overhead and always on).


Comments?  We probably should try to get to a conclusion in general...


The logging info being proposed is developer-oriented.  I hope that
people are not expecting our users to understand our developer trace
info -- we, as developers, have better tools than printf to figure out
what is happening.


I have to admit that I don't agree w/ "better" as a universally general 
statement, as debug statements can include information provided by the 
developer not immediately obvious.


Is there some kind of aspect framework we can use?  Then for 
develeopers, they have to implicitly do something to get the stuff to 
come out, it's not a runtime cost for anyone else, and the stuff stays 
in the codebase for use later?


geir

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [classlib] logging from within our implementation

2006-05-30 Thread Tim Ellison
Geir Magnusson Jr wrote:
> Seems like there is an important issue here, but the discussion can't
> seem to escape out of the thicket of the example.
> 
> 1) Should we allow any logging from within the classlibrary?

Just in case there was any doubt from my earlier postings...

I think we should not be explicitly logging debug info as part of our
class library implementation.

> 2) How should we do it?
> 
> There are a bunch of ways for the second question...  using j.u.l, using
>  IOC and injecting our own logging target to reduce dependencies and
> make people think before logging, using aspects?

Both j.u.l and IoC would require code in the implementation to perform
the logging actions (or check the guard).  Putting this logic throughout
the class library will IMHO result in module coupling, code bloat and
overall performance degradation (or no logging!).

Adding logging statements is expecting the class library developer to
decide /a priori/ what debug|trace info is useful to the person trying
to resolve a problem.  Existing debug|trace tools work with the runtime
to figure out the pertinent information as you are interested in it.
(The only caveat being 'flight data recorder' type trace where the trace
points are typically very low overhead and always on).

> Comments?  We probably should try to get to a conclusion in general...

The logging info being proposed is developer-oriented.  I hope that
people are not expecting our users to understand our developer trace
info -- we, as developers, have better tools than printf to figure out
what is happening.

Regards,
Tim

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[classlib] logging from within our implementation

2006-05-30 Thread Geir Magnusson Jr
Seems like there is an important issue here, but the discussion can't 
seem to escape out of the thicket of the example.


1) Should we allow any logging from within the classlibrary?

2) How should we do it?

There are a bunch of ways for the second question...  using j.u.l, using 
 IOC and injecting our own logging target to reduce dependencies and 
make people think before logging, using aspects?


Comments?  We probably should try to get to a conclusion in general...

geir

-
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]