[ovirt-devel] Question/thoughts about our engine logging framework

Martin Perina mperina at redhat.com
Mon Jun 16 13:49:57 UTC 2014



----- Original Message -----
> From: "Alon Bar-Lev" <alonbl at redhat.com>
> To: "Martin Perina" <mperina at redhat.com>
> Cc: devel at ovirt.org
> Sent: Monday, June 16, 2014 3:26:00 PM
> Subject: Re: [ovirt-devel] Question/thoughts about our engine logging framework
> 
> 
> 
> ----- Original Message -----
> > From: "Martin Perina" <mperina at redhat.com>
> > To: "Alon Bar-Lev" <alonbl at redhat.com>
> > Cc: devel at ovirt.org
> > Sent: Monday, June 16, 2014 4:22:16 PM
> > Subject: Re: [ovirt-devel] Question/thoughts about our engine logging
> > framework
> > 
> > 
> > 
> > ----- Original Message -----
> > > From: "Alon Bar-Lev" <alonbl at redhat.com>
> > > To: "Martin Perina" <mperina at redhat.com>
> > > Cc: devel at ovirt.org, "Greg Sheremeta" <gshereme at redhat.com>
> > > Sent: Sunday, June 15, 2014 7:44:22 PM
> > > Subject: Re: [ovirt-devel] Question/thoughts about our engine logging
> > > framework
> > > 
> > > 
> > > 
> > > ----- Original Message -----
> > > > From: "Martin Perina" <mperina at redhat.com>
> > > > To: "Alon Bar-Lev" <alonbl at redhat.com>
> > > > Cc: devel at ovirt.org, "Greg Sheremeta" <gshereme at redhat.com>
> > > > Sent: Sunday, June 15, 2014 8:17:13 PM
> > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine logging
> > > > framework
> > > > 
> > > > 
> > > > 
> > > > ----- Original Message -----
> > > > > From: "Alon Bar-Lev" <alonbl at redhat.com>
> > > > > To: "Martin Perina" <mperina at redhat.com>
> > > > > Cc: devel at ovirt.org, "Greg Sheremeta" <gshereme at redhat.com>
> > > > > Sent: Sunday, June 15, 2014 6:27:09 PM
> > > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine logging
> > > > > framework
> > > > > 
> > > > > 
> > > > > 
> > > > > ----- Original Message -----
> > > > > > From: "Martin Perina" <mperina at redhat.com>
> > > > > > To: "Alon Bar-Lev" <alonbl at redhat.com>
> > > > > > Cc: devel at ovirt.org, "Greg Sheremeta" <gshereme at redhat.com>
> > > > > > Sent: Sunday, June 15, 2014 7:19:15 PM
> > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine
> > > > > > logging
> > > > > > framework
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > ----- Original Message -----
> > > > > > > From: "Alon Bar-Lev" <alonbl at redhat.com>
> > > > > > > To: "Martin Perina" <mperina at redhat.com>
> > > > > > > Cc: "Greg Sheremeta" <gshereme at redhat.com>, devel at ovirt.org
> > > > > > > Sent: Sunday, June 15, 2014 5:07:28 PM
> > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine
> > > > > > > logging
> > > > > > > framework
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > ----- Original Message -----
> > > > > > > > From: "Martin Perina" <mperina at redhat.com>
> > > > > > > > To: "Greg Sheremeta" <gshereme at redhat.com>
> > > > > > > > Cc: devel at ovirt.org
> > > > > > > > Sent: Sunday, June 15, 2014 5:34:51 PM
> > > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine
> > > > > > > > logging
> > > > > > > > framework
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > ----- Original Message -----
> > > > > > > > > From: "Greg Sheremeta" <gshereme at redhat.com>
> > > > > > > > > To: "Yair Zaslavsky" <yzaslavs at redhat.com>
> > > > > > > > > Cc: devel at ovirt.org
> > > > > > > > > Sent: Sunday, June 15, 2014 4:25:54 PM
> > > > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our engine
> > > > > > > > > logging
> > > > > > > > > framework
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > ----- Original Message -----
> > > > > > > > > > From: "Eli Mesika" <emesika at redhat.com>
> > > > > > > > > > To: "Yair Zaslavsky" <yzaslavs at redhat.com>
> > > > > > > > > > Cc: devel at ovirt.org
> > > > > > > > > > Sent: Sunday, June 15, 2014 10:02:15 AM
> > > > > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our
> > > > > > > > > > engine
> > > > > > > > > > logging
> > > > > > > > > > framework
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > ----- Original Message -----
> > > > > > > > > > > From: "Vojtech Szocs" <vszocs at redhat.com>
> > > > > > > > > > > To: "Martin Perina" <mperina at redhat.com>
> > > > > > > > > > > Cc: devel at ovirt.org
> > > > > > > > > > > Sent: Friday, June 13, 2014 12:57:49 PM
> > > > > > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our
> > > > > > > > > > > engine
> > > > > > > > > > > logging
> > > > > > > > > > > framework
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > ----- Original Message -----
> > > > > > > > > > > > From: "Martin Perina" <mperina at redhat.com>
> > > > > > > > > > > > To: "Yair Zaslavsky" <yzaslavs at redhat.com>
> > > > > > > > > > > > Cc: devel at ovirt.org
> > > > > > > > > > > > Sent: Friday, June 13, 2014 10:43:59 AM
> > > > > > > > > > > > Subject: Re: [ovirt-devel] Question/thoughts about our
> > > > > > > > > > > > engine
> > > > > > > > > > > > logging
> > > > > > > > > > > > framework
> > > > > > > > > > > > 
> > > > > > > > > > > > Hi Yair,
> > > > > > > > > > > > 
> > > > > > > > > > > > I had in my mind to clean up logging framework mess for
> > > > > > > > > > > > quite
> > > > > > > > > > > > some
> > > > > > > > > > > > time
> > > > > > > > > > > > :-)
> > > > > > > > > > > > Currently this is the usage of logging frameworks in
> > > > > > > > > > > > engine
> > > > > > > > > > > > classes:
> > > > > > > > > > > > 
> > > > > > > > > > > > java.util.logging.Logger              6.8%
> > > > > > > > > > > > org.apache.commons.logging.Log        7.8%
> > > > > > > > > > > > org.apache.log4j.Logger              13.6%
> > > > > > > > > > > > org.ovirt.engine.core.utils.log.Log  68.8%
> > > > > > > > > > > > org.slf4j.Logger                      2.9%
> > > > > > > > > > > > 
> > > > > > > > > > > > I think we should definitely use only 1 logging
> > > > > > > > > > > > framework
> > > > > > > > > > > > for
> > > > > > > > > > > > the
> > > > > > > > > > > > whole
> > > > > > > > > > > > engine!
> > > > > > > > > > > > 
> > > > > > > > > > > > So +1 to slf4j from me.
> > > > > > > > > > > 
> > > > > > > > > > > +1 from me as well.
> > > > > > > > > > 
> > > > > > > > > > +1
> > > > > > > > > > 
> > > > > > > > > +1 to slf4j. I started using that exclusively in Java
> > > > > > > > > projects
> > > > > > > > > 4
> > > > > > > > > years
> > > > > > > > > ago
> > > > > > > > > :)
> > > > > > > > > 
> > > > > > > > > Just be careful if we're introducing it as a new dependency.
> > > > > > > > > (It's
> > > > > > > > > provided
> > > > > > > > > by Fedora, but there might be conflicts if JBoss/Wildfly uses
> > > > > > > > > it.
> > > > > > > > > We
> > > > > > > > > should
> > > > > > > > > use that same version, if it does.)
> > > > > > > > 
> > > > > > > > We already have a dependency to slf4j 1.7.5 in the root
> > > > > > > > pom.xml.
> > > > > > > > And
> > > > > > > > AFAIK
> > > > > > > > 1.7.2 is a part of EAP 6.
> > > > > > > 
> > > > > > > The jboss we are using provides slf4j-1.6.1, while it seems to be
> > > > > > > patched
> > > > > > > to
> > > > > > > support varargs[1] as 1.7.x.
> > > > > > 
> > > > > > Ha, you are right, inside JBoss it works, because they did the same
> > > > > > thing
> > > > > > as
> > > > > > with
> > > > > > log4j. They provide same classes as slf4j, but with their own
> > > > > > different
> > > > > > implementation with JBoss Logging backend :-(
> > > > > > 
> > > > > > So if you compile with slf4j 1.7, you can use varargs even when
> > > > > > JBoss
> > > > > > tries
> > > > > > to tell
> > > > > > us it provides slf4j 1.6 ...
> > > > > > 
> > > > > > > As standalone at fedora there is slf4j which is compatible and at
> > > > > > > rhel
> > > > > > > there
> > > > > > > is slf4j-eap6 both are 1.7.x.
> > > > > > > However for centos we use jpackage which provides only 1.6.1[2].
> > > > > > > So for standalone packages we may experience issues if were build
> > > > > > > using
> > > > > > > varargs.
> > > > > > > 
> > > > > > > [1] logger.debug("format", obj1, obj2, obj3, ...)
> > > > > > > [2] http://jpackage.org/browser/rpm.php?jppversion=6.0&id=12435
> > > > > > 
> > > > > > AFAIK the only non JBoss usage of logging is at engine-config and
> > > > > > engine-manage-domains.
> > > > > > So we have 2 options:
> > > > > > 
> > > > > >   1) Use log4j in engine-config and engine-manage-domains (current
> > > > > >   status)
> > > > > >   and use
> > > > > >      slf4j in the rest of engine
> > > > > > 
> > > > > >   2) Package slf4j 1.7.x as our dependency
> > > > > > 
> > > > > > I would prefer option 1).
> > > > > > 
> > > > > 
> > > > > No... we use jboss modules within these, so you actually using jboss
> > > > > version.
> > > > 
> > > > Not entirely true. We are using JBoss version of log4j to configure
> > > > logging.
> > > > But we cannot use slf4j provided by JBoss, because it can use as a
> > > > backend
> > > > only JBoss Logging and not log4j. I just verified that if slf4j is used
> > > > in engine-manage-domains, it's not logged to the file configured by
> > > > log4j.
> > > > 
> > > > > The only one that does not use jboss modules is dwh, in which we do
> > > > > not
> > > > > control logging anyway.
> > > > > We just need to make sure that standalone application either use
> > > > > commons-logging (primitive) or slf4j-1.6.x for now.
> > > > > And in either case to use java.util.loggings as infa and not log4j if
> > > > > not
> > > > > too
> > > > > late for that.
> > > > 
> > > > In java.utils.logging you cannot use varargs in simple way (which is
> > > > for
> > > > me
> > > > one of the main reason to use slf4j):
> > > > 
> > > >   log.info("Hello: {} {} {}", p1, p2, p3);
> > > > 
> > > > but you have to create new array of params:
> > > > 
> > > >   log.info("Hello: {} {} {}", new Object[] { p1, p2, p3});
> > > > 
> > > > or format message outside logging framework:
> > > > 
> > > >   log.info(String.format("Hello: %s %s %s", p1, p2, p3));
> > > > 
> > > > And this "external formatting" is the only way for commons-logging
> > > > framework.
> > > 
> > > You did not understand.
> > 
> > Well, I'm not sure I understand even now, but see my response :-)
> > 
> > > 1. use log4j or apache commons within application.
> > 
> > That's not a good idea because both doesn't support simple varargs.
> > We want use slf4j to be able to use this:
> > 
> >     log.info("Hello: {} {} {}", p1, p2, p3);
> > 
> 
> I am sorry, had a typo... it should have been:
> 
> 1. use slf4j or apache commons within application.

OK, now I understand, so if agreed then we will use slf4j.

So if we agree to slf4j, I plan to use slf4j in engine (the only
exception is java.logging in GWT related parts of code), remove
dependency to other logging frameworks (log4j, commons-logging)
and remove internal logging framework (org.ovirt.engine.core.utils.log)

> 
> > 
> > > 2. use java.logging as logging infra.
> > 
> > Well, AFAIK JBoss reimplements java.logging backend and redirects
> > it to its own backend (JBoss Logging). No sure, if we will be able
> > (or want) to bypass this redirection and use java.logging as backend
> > for engine. Not to mention, there will always be server.log for JBoss
> > infra logging.
> > 
> > And for engine-manage-domains and engine-config we would have to
> > drop command line configuration using log4j introduced in 3.5 and
> > for next version change it to java.logging configuration
> > 
> > So personally I don't see any benefit of this change for users nor
> > developers ...
> 
> yes, and drop the usage of log4j entirely.

OK, so migrate from log4j to java.logging backend in engine-manage-domains
and engine-config ...

> 
> > 
> > > 
> > > > 
> > > > > 
> > > > > > Btw in RHEL7 there is packaged slf4j 1.7.5
> > > > > > 
> > > > > > > 
> > > > > > > > 
> > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > Note that GWT UI code uses java.util.logging exclusively
> > > > > > > > > > > to
> > > > > > > > > > > do
> > > > > > > > > > > all
> > > > > > > > > > > logging.
> > > > > > > > > > > (GWT emulates java.util.logging API and provides log
> > > > > > > > > > > handlers
> > > > > > > > > > > for
> > > > > > > > > > > use
> > > > > > > > > > > on
> > > > > > > > > > > client side such as console.log() or
> > > > > > > > > > > stdout/DevMode-during-debug
> > > > > > > > > > > handlers.)
> > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > > And once we agree to 1 logging framework, I can start
> > > > > > > > > > > > preparing
> > > > > > > > > > > > patches
> > > > > > > > > > > > to
> > > > > > > > > > > > use it.
> > > > > > > > > > > > 
> > > > > > > > > > > > ----- Original Message -----
> > > > > > > > > > > > > From: "Yair Zaslavsky" <yzaslavs at redhat.com>
> > > > > > > > > > > > > To: devel at ovirt.org
> > > > > > > > > > > > > Sent: Friday, June 13, 2014 8:15:55 AM
> > > > > > > > > > > > > Subject: [ovirt-devel] Question/thoughts about our
> > > > > > > > > > > > > engine
> > > > > > > > > > > > > logging
> > > > > > > > > > > > > framework
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > > During my recent work on AAA, I was suggested by Juan
> > > > > > > > > > > > > Hernandez
> > > > > > > > > > > > > to
> > > > > > > > > > > > > use
> > > > > > > > > > > > > slf4j
> > > > > > > > > > > > > logging framework which serves as a facade for other
> > > > > > > > > > > > > logging
> > > > > > > > > > > > > frameworks
> > > > > > > > > > > > > (including java utils logging which is now used by
> > > > > > > > > > > > > jboss),
> > > > > > > > > > > > > log4j
> > > > > > > > > > > > > and
> > > > > > > > > > > > > others.
> > > > > > > > > > > > > I have accepted Juan's offer, and then when looking
> > > > > > > > > > > > > at
> > > > > > > > > > > > > our
> > > > > > > > > > > > > LogFactory
> > > > > > > > > > > > > class
> > > > > > > > > > > > > I
> > > > > > > > > > > > > have noticed we use commons logging.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Several thoughts/questions -
> > > > > > > > > > > > > A. Why continue use our own wrapper as slf4j is
> > > > > > > > > > > > > already
> > > > > > > > > > > > > a
> > > > > > > > > > > > > facade.
> > > > > > > > > > > > > b. I think we should move cross java code to slf4j.
> > > > > > > > > > > > > What
> > > > > > > > > > > > > do
> > > > > > > > > > > > > you
> > > > > > > > > > > > > think
> > > > > > > > > > > > > on
> > > > > > > > > > > > > this
> > > > > > > > > > > > > point?
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Some reading material -
> > > > > > > > > > > > > 
> > > > > > > > > > > > > http://javarevisited.blogspot.com.au/2013/08/why-use-sl4j-over-log4j-for-logging-in.html
> > > > > > > > > > > > > http://stackoverflow.com/questions/3222895/what-is-the-issue-with-the-runtime-discovery-algorithm-of-apache-commons-logging
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Yair
> > > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > > Devel mailing list
> > > > > > > > > > > > > Devel at ovirt.org
> > > > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > > > > > > 
> > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > Devel mailing list
> > > > > > > > > > > > Devel at ovirt.org
> > > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > > > > > 
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > Devel mailing list
> > > > > > > > > > > Devel at ovirt.org
> > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > > > > 
> > > > > > > > > > _______________________________________________
> > > > > > > > > > Devel mailing list
> > > > > > > > > > Devel at ovirt.org
> > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > > > 
> > > > > > > > > _______________________________________________
> > > > > > > > > Devel mailing list
> > > > > > > > > Devel at ovirt.org
> > > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > > 
> > > > > > > > _______________________________________________
> > > > > > > > Devel mailing list
> > > > > > > > Devel at ovirt.org
> > > > > > > > http://lists.ovirt.org/mailman/listinfo/devel
> > > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 



More information about the Devel mailing list