[wildfly-dev] Hibernate + Log4J2 Performance Problem

Petar Tahchiev paranoiabla at gmail.com
Fri Jul 11 10:32:29 EDT 2014


Hi guys,

I'm reposting this from hibernate-dev following the advice I was given
there.
-----------------------------------------------------------------------------------------------------------
So here's my question. I'm reading this issue:

https://issues.jboss.org/browse/JBLOGGING-95

and I'm trying to make my hibernate use log4j2. So far I had

<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>jboss-logging-log4j</artifactId>
     <version>${jboss.logging.version}</version>
</dependency>

and I have log4j -> log4j2 routed. Unfortunately now my hibernate creates a
log4j.log file and log4j prints the messages to the command line (still no
log4j2) :(

So I got rid of this dependency and I added the jboss-logging. So now
here's my set of jars:

hibernate-core
hibernate-entitymanager
hibernate-c3p0
hibernate-validator
log4j2
org.jboss.logging:jboss-logging:jar:3.2.0.Beta1

then I run my task and I get performance of:
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 3:12.951s
[INFO] Finished at: Fri Jul 11 12:50:41 EEST 2014
[INFO] Final Memory: 128M/508M
[INFO]
------------------------------------------------------------------------

3 minutes and 12 seconds. Performance is quite good. However I use the
maven enforcer plugin and maven did warn me I have duplicate classes:

Duplicate classes found:

  Found in:
    org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
    org.jboss.logging:jboss-logging:jar:3.2.0.Beta1:compile
  Duplicate classes:
    org/jboss/logging/Field.class
    org/jboss/logging/LoggerProvider.class
    org/jboss/logging/Log4jLoggerProvider.class
    org/jboss/logging/NDC.class
    org/jboss/logging/MessageBundle.class
    org/jboss/logging/AbstractMdcLoggerProvider.class
    org/jboss/logging/Log4jLogger$1.class
    org/jboss/logging/Messages$1.class
    org/jboss/logging/JDKLevel.class
    org/jboss/logging/DelegatingBasicLogger.class
    org/jboss/logging/JDKLoggerProvider.class
    org/jboss/logging/Slf4jLoggerProvider.class
    org/jboss/logging/LoggingClass.class
    org/jboss/logging/Messages.class
    org/jboss/logging/AbstractLoggerProvider.class
    org/jboss/logging/Property.class
    org/jboss/logging/JBossLogRecord.class
    org/jboss/logging/SerializedLogger.class
    org/jboss/logging/Message.class
    org/jboss/logging/MDC.class
    org/jboss/logging/Message$Format.class
    org/jboss/logging/JBossLogManagerProvider$1.class
    org/jboss/logging/Cause.class
    org/jboss/logging/Param.class
    org/jboss/logging/JDKLogger$1.class
    org/jboss/logging/JBossLogManagerLogger.class
    org/jboss/logging/Slf4jLogger.class
    org/jboss/logging/JBossLogManagerProvider.class
    org/jboss/logging/FormatWith.class
    org/jboss/logging/Slf4jLocationAwareLogger$1.class
    org/jboss/logging/Logger$Level.class
    org/jboss/logging/BasicLogger.class
    org/jboss/logging/Logger$1.class
    org/jboss/logging/JDKLogger.class
    org/jboss/logging/JBossLogManagerLogger$1.class
    org/jboss/logging/MessageLogger.class
    org/jboss/logging/ParameterConverter.class
    org/jboss/logging/Logger.class
    org/jboss/logging/Slf4jLocationAwareLogger.class
    org/jboss/logging/Log4jLogger.class
    org/jboss/logging/LoggerProviders$1.class
    org/jboss/logging/Slf4jLogger$1.class
    org/jboss/logging/AbstractLoggerProvider$Entry.class
    org/jboss/logging/LogMessage.class
    org/jboss/logging/LoggerProviders.class

I excluded the jboss-logging from all hibernate dependencies like this:
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>${hibernate.validator.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.logging</groupId>
                    <artifactId>jboss-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

No more duplicate classes :) . I run the same task again and here's the
performance:

[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 1:30:04.829s
[INFO] Finished at: Fri Jul 11 12:28:08 EEST 2014
[INFO] Final Memory: 118M/512M
[INFO]
------------------------------------------------------------------------

1 hour and 30 minutes and 4 seconds!!!!!! OMG :X How could this be??? And
on top of this no Log4j messages are coming through :(

This is probably a bug or I'm clearly missing how to setup Hibernate and
LOG4J2. Can you please help me, or at least point me to a forum or mailing
list where I can post this.

---------------------------------------------------------------------------------------------------------

-- 
Regards, Petar!
Karlovo, Bulgaria.
---
Public PGP Key at:
https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C3110611
Key Fingerprint: A369 A7EE 61BC 93A3 CDFF  55A5 1965 8550 C311 0611
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20140711/469657fd/attachment-0001.html 


More information about the wildfly-dev mailing list