The logger your defined will inherit from root by default in log4j. So what ever you defined there, you do not have to redefine again unless you want to overwrite it. And if you overwrite it, you only have to specify log level, not the appender reference, other wise you will have double logging output. With the exception of setting additivity="false", in this case you are turning the "inheritance" off.
Try to set your "root" logger to ERROR, then lower your other custom loggers level if needed basis. So in this way, just omitting the hibernate logger will in effect NOT output anything higher than ERROR msg. If you insist on NOT wanting ERROR msg at all, then set your root to OFF level (not recommended).
Example:
Code:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="ASYNC_APPENDER" class="org.apache.log4j.AsyncAppender">
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="citimortgage" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="citimortgage" additivity="true">
<level value="debug" />
</logger>
<logger name="com.citigroup.rel.common.webservice" additivity="false">
<level value="debug" />
</logger>
<!-- Coding change for R35937 Local-->
<logger name = "org.apache.velocity" additivity = "false" >
<level value = "debug" />
<appender-ref ref = "ASYNC" />
</logger >
<!-- Enable this if you want to see hibernate logging
<logger name="org.hibernate">
<level value="INFO" />
</logger>
-->
<root>
<priority value="ERROR"/>
<appender-ref ref="ASYNC_APPENDER"/>
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>
Also, these are explained very clearly in the log4j manual documentation. READ IT!