You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Danesh Kuruppu <dk...@gmail.com> on 2012/08/25 06:21:21 UTC

Comparison log4j 2 with log4j 1.2.17

Hi All,



I am new to this log4j logging scheme and I am going to use this for our
application.

I had going through different articles regarding this and I am currently
interested on using log4j 1.2.17 package.



I came to know that you have release new log4j 2 alpha version. But I
wouldn’t find any articles written for log4j 2 package (How we going to use
it, What are the difference in implementation with log4j 1.2.17, etc)



They have mentioned that *The API for Log4j 2 is not compatible with Log4j
1.x*, I have some questions regarding this



What are the different in implementation when we go for log4j 2?

(Comparing with log4j 1.2.17 which I am currently interested for)



What do you mean by “not Compatible”?



Since I am a fresher for this login scheme, What is the BEST option I would
take (log4j 2 package or log4j 1.2.17 package)



Can you also share some articles written for log4j 2 alpha version.(How we
are going to use it in our application)



Looking for quick response



Thanks


Danesh

Re: Comparison log4j 2 with log4j 1.2.17

Posted by Danesh Kuruppu <dk...@gmail.com>.
Hi  Ralph Goers,

Thanks for your quick response. your response is very clear and very
informative.

While reading I came up with more questions to be cleared.

*Log4j 1.2 has been around for a long, long time and has met the needs of
> many applications, but it also has some very serious defects that can't
> easily be fixed*


If you can, please tell me what are those very serious defects in Log4j 1.2
?
What I get from your comment is that, log4j 1.2.17 is not recommended for
critical application. Is it correct?
What causes log4j 1.2.17 to deflect from good logging framework?

When using log4j 2 package,
1. Can I add more levels for the logging scheme.
2. Can I add more patterns ( e.g:- I need to add the logged user of the
system for this logging message)
3. Can I customize the Header of the logged file?
4. Can I change the logging properties while the application running
without redeploying.
5. When using DailyRollingFileAppender is there any method to set Maximum
No of Back files?

These are the points, I am interested for my application. I was able
implement most of these using log4j 1.2.17.
If so please tell how I implement it?

Since this log4j 2 is very new to me. I need more help from you.

Thanks
Danesh


On Sun, Aug 26, 2012 at 9:29 AM, Ralph Goers <ra...@dslextreme.com>wrote:

> These are very good questions - in fact I should probably add them as FAQs
> to the web site.
>
> Log4j 2 is very new. Currently, the only article written about it is in
> German in a recent issue of Java Magazine -
> http://it-republik.de/jaxenter/java-magazin-ausgaben/Platform-as-a-Service-000514.html
> .
>
> I received an email yesterday recommending we add a "Switching from Log4j
> 1.x" page to the site. Your questions confirm that that would be a very
> good idea.
>
> In reference to how to use Log4j 2 in your application, some simple
> examples of how to use it can be found at
> http://logging.apache.org/log4j/2.x/manual/api.html and the other pages
> that document the APi.
>
> To understand the differences you should understand that log4j 1.x was
> created quite a long time ago. After a while the primary author of Log4j
> created SLF4J and Logback in an effort to improve both the API and the
> implementation. Log4j 2 attempts to learn from both Log4j 1.x and SLF4J and
> Logback and improve on them.   So the areas of incompatibility are:
> 1. Obtaining a logger. In Log4j 1.x you would do Logger.getLogger() or
> LogManager.getLogger(). Log4j 2 only supports LogManager.getLogger().
> 2. Log4j exposed its inner workings through the Logger class. You could
> access the Logger repository and other internal things that should not have
> been part of the general APi.
> 3. In Log4j 1.x Level uses the practice of using int values. Level in
> Log4j 2 is an enum.
> 4. Log4j 1.x had a Priority class (synonymous with Level) and a Category
> class (synonymous with Logger).  Priority and Category do not exist in
> Log4j 2.
> 5. Log4j 1.x supports property files and XML to configure it. Log4j 2
> supports XML and JSON. The XML configuration format is different in Log4j 2
> than it was in Log4j 1.
> I'm sure there are other things but these are the main ones that come to
> mind.
>
> However, Log4j 2 also provides a "compatibility bridge" between code that
> uses Log4j 1.x Log4j 2.  It doesn't support everything (such as accessing
> Logger repositories) but most code written for Log4j 1.x should work. But
> even then the configuration file format will still be different.
>
> As for the "Best" option, that depends on what your requirements are.  I
> have been working on Log4j 2 primarily because I need a good logging
> framework that can meet the requirements of audit logging in banking
> applications and have found that no other framework meets them. But since
> it will be replacing another logging framework it has to be on par in its
> fundamental operation with that framework.  That said, Log4j 2 is still in
> alpha status for a reason - it needs more testing from a variety of end
> users to shake out whatever issues there may be.  Log4j 1.2 has been around
> for a long, long time and has met the needs of many applications, but it
> also has some very serious defects that can't easily be fixed - especially
> since it is targeted at fairly old versions of the JDK.  The other viable
> alternative is SLF4J/Logback which also has a proven track record - and may
> meet your needs if you are doing diagnostic and debug logging.
>
> Please feel free to ask other questions you may have and we will be happy
> to try to provide the answers.
>
> Ralph
>
>
> On Aug 24, 2012, at 9:21 PM, Danesh Kuruppu wrote:
>
> > Hi All,
> >
> >
> >
> > I am new to this log4j logging scheme and I am going to use this for our
> > application.
> >
> > I had going through different articles regarding this and I am currently
> > interested on using log4j 1.2.17 package.
> >
> >
> >
> > I came to know that you have release new log4j 2 alpha version. But I
> > wouldn’t find any articles written for log4j 2 package (How we going to
> use
> > it, What are the difference in implementation with log4j 1.2.17, etc)
> >
> >
> >
> > They have mentioned that *The API for Log4j 2 is not compatible with
> Log4j
> > 1.x*, I have some questions regarding this
> >
> >
> >
> > What are the different in implementation when we go for log4j 2?
> >
> > (Comparing with log4j 1.2.17 which I am currently interested for)
> >
> >
> >
> > What do you mean by “not Compatible”?
> >
> >
> >
> > Since I am a fresher for this login scheme, What is the BEST option I
> would
> > take (log4j 2 package or log4j 1.2.17 package)
> >
> >
> >
> > Can you also share some articles written for log4j 2 alpha version.(How
> we
> > are going to use it in our application)
> >
> >
> >
> > Looking for quick response
> >
> >
> >
> > Thanks
> >
> >
> > Danesh
>
>

Re: Comparison log4j 2 with log4j 1.2.17

Posted by Ralph Goers <ra...@dslextreme.com>.
These are very good questions - in fact I should probably add them as FAQs to the web site.

Log4j 2 is very new. Currently, the only article written about it is in German in a recent issue of Java Magazine - http://it-republik.de/jaxenter/java-magazin-ausgaben/Platform-as-a-Service-000514.html.

I received an email yesterday recommending we add a "Switching from Log4j 1.x" page to the site. Your questions confirm that that would be a very good idea. 

In reference to how to use Log4j 2 in your application, some simple examples of how to use it can be found at http://logging.apache.org/log4j/2.x/manual/api.html and the other pages that document the APi. 

To understand the differences you should understand that log4j 1.x was created quite a long time ago. After a while the primary author of Log4j created SLF4J and Logback in an effort to improve both the API and the implementation. Log4j 2 attempts to learn from both Log4j 1.x and SLF4J and Logback and improve on them.   So the areas of incompatibility are:
1. Obtaining a logger. In Log4j 1.x you would do Logger.getLogger() or LogManager.getLogger(). Log4j 2 only supports LogManager.getLogger().
2. Log4j exposed its inner workings through the Logger class. You could access the Logger repository and other internal things that should not have been part of the general APi.
3. In Log4j 1.x Level uses the practice of using int values. Level in Log4j 2 is an enum.
4. Log4j 1.x had a Priority class (synonymous with Level) and a Category class (synonymous with Logger).  Priority and Category do not exist in Log4j 2.
5. Log4j 1.x supports property files and XML to configure it. Log4j 2 supports XML and JSON. The XML configuration format is different in Log4j 2 than it was in Log4j 1.
I'm sure there are other things but these are the main ones that come to mind.

However, Log4j 2 also provides a "compatibility bridge" between code that uses Log4j 1.x Log4j 2.  It doesn't support everything (such as accessing Logger repositories) but most code written for Log4j 1.x should work. But even then the configuration file format will still be different.

As for the "Best" option, that depends on what your requirements are.  I have been working on Log4j 2 primarily because I need a good logging framework that can meet the requirements of audit logging in banking applications and have found that no other framework meets them. But since it will be replacing another logging framework it has to be on par in its fundamental operation with that framework.  That said, Log4j 2 is still in alpha status for a reason - it needs more testing from a variety of end users to shake out whatever issues there may be.  Log4j 1.2 has been around for a long, long time and has met the needs of many applications, but it also has some very serious defects that can't easily be fixed - especially since it is targeted at fairly old versions of the JDK.  The other viable alternative is SLF4J/Logback which also has a proven track record - and may meet your needs if you are doing diagnostic and debug logging.

Please feel free to ask other questions you may have and we will be happy to try to provide the answers.

Ralph


On Aug 24, 2012, at 9:21 PM, Danesh Kuruppu wrote:

> Hi All,
> 
> 
> 
> I am new to this log4j logging scheme and I am going to use this for our
> application.
> 
> I had going through different articles regarding this and I am currently
> interested on using log4j 1.2.17 package.
> 
> 
> 
> I came to know that you have release new log4j 2 alpha version. But I
> wouldn’t find any articles written for log4j 2 package (How we going to use
> it, What are the difference in implementation with log4j 1.2.17, etc)
> 
> 
> 
> They have mentioned that *The API for Log4j 2 is not compatible with Log4j
> 1.x*, I have some questions regarding this
> 
> 
> 
> What are the different in implementation when we go for log4j 2?
> 
> (Comparing with log4j 1.2.17 which I am currently interested for)
> 
> 
> 
> What do you mean by “not Compatible”?
> 
> 
> 
> Since I am a fresher for this login scheme, What is the BEST option I would
> take (log4j 2 package or log4j 1.2.17 package)
> 
> 
> 
> Can you also share some articles written for log4j 2 alpha version.(How we
> are going to use it in our application)
> 
> 
> 
> Looking for quick response
> 
> 
> 
> Thanks
> 
> 
> Danesh