Reputation: 11
I have a web application in spring boot + Hibernate + Log4j deployed in JBOSS. All the hibernate sql queries are getting logged in server.log if we use "spring.jpa.show-sql = true" in application.properties. As per the Hibernate Log4j instruction we need to turn this property to false so that sql statements will get logged in separate log file as per Log4j configuration. If we turn it to false then also sql statements are not logged in separate log file. All other application related logs are getting logged in separate log file except hibernate logs. Please help to get this issue resolved.
Below is the entry in application.properties file.
spring.jpa.show-sql = false
spring.jpa.open-in-view=false
spring.datasource.ucm.default-auto-commit=false
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.id.new_generator_mappings=false
spring.jackson.serialization.fail-on-empty-beans=false
# SQL statements and parameters
log4j.logger.org.hibernate.SQL=debug
log4j.logger.org.hibernate.type.descriptor.sql=trace
Log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n
</Property>
<Property name="APP_LOG_ROOT">c:/log/VendorPortal</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="false">
<PatternLayout pattern="${LOG_PATTERN}" />
</Console>
<!-- File Appender -->
<RollingFile name="RollingFile"
fileName="c:/log/vendorportal.log"
filePattern="c:/log/vendorportal-%d{MM-dd-yyyy}.log"
ignoreExceptions="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT"
ignoreExceptions="false">
<PatternLayout pattern="%m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework" additivity="false"
level="error">
<AppenderRef ref="RollingFile" />
</Logger>
<Logger name="org.hibernate" level="info" additivity="false">
<AppenderRef ref="RollingFile" />
</Logger>
<Logger name="org.hibernate.SQL" level="DEBUG"
additivity="false">
<AppenderRef ref="RollingFile" />
</Logger>
<Logger name="org.hibernate.type.descriptor.sql" level="TRACE"
additivity="false">
<AppenderRef ref="RollingFile" />
</Logger>
<Root level="error">
<AppenderRef ref="console" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
Upvotes: 0
Views: 2471
Reputation: 81
As per your query posted, your configuration seems to be corrected.
FROM:
<Logger name="org.hibernate.SQL" level="DEBUG"
....
</Logger>
<Logger name="org.hibernate.type.descriptor.sql" level="TRACE"
....
</Logger>
<Root level="error">
....
</Root>
TO:
<Logger name="org.hibernate.SQL" level="DEBUG"
....
</Logger>
<Logger name="org.hibernate.type.descriptor.sql" level="TRACE"
....
</Logger>
<Root level="DEBUG">
....
</Root>
As the logging levels are of priority => TRACE > DEBUG > INFO > ERROR > WARN > FATAL
Hope this helps to resolve the issue.
Upvotes: 0
Reputation: 2444
You need place Log4j config file in our application. Then insert Logger tag in it:
<Configuration status="WARN" strict="true">
<Properties>
<Property name="filename">logfile.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="Console" target="SYSTEM_OUT">
<Layout type="PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
</Layout>
</Appender>
<Appender type="File" name="FileAppender" fileName="${filename}">
<Layout type="PatternLayout">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</Layout>
</Appender>
</Appenders>
<Loggers>
<Logger name="org.hibernate.SQL" level="debug" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="org.hibernate.type.descriptor.sql" level="trace" additivity="false">
<AppenderRef ref="Console"/>
</Logger>..........
......
....
Ya ALI
Upvotes: 1