【问题标题】:Enabling Logging for JpaTransactionManager为 JpaTransactionManager 启用日志记录
【发布时间】:2012-04-27 16:53:42
【问题描述】:

我在 spring 3.5 容器中使用带有休眠 3 的 JpaTransactionManager。我无法为 JPA 启用日志记录。我希望查看用于调试我的一些服务的事务管理日志。我正在使用 log4j。

这是我的 log4j.properties 中的内容

# For JPA
log4j.logger.org.springframework.orm.jpa=DEBUG
log4j.logger.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
log4j.logger.org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter=DEBUG
log4j.logger.org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean=DEBUG
log4j.logger.org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor=DEBUG
log4j.logger.org.springframework.transaction=DEBUG
log4j.logger.org.springframework=DEBUG
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.hibernate.SQL=DEBUG

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\apps\application.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=ALL, file

【问题讨论】:

  • 如果您只启用org.springframework=DEBUG 会怎样?然后您会发现哪些记录器很有趣(在大量其他记录器之间)。
  • 谢谢,我开始在 SLF4J 上使用 logback (logback.qos.ch) 进行日志记录,现在一切正常。我认为以前在 NOOP 模式下使用 SLF4J 时存在一些问题。
  • 您介意自己回答这个问题,以便我们将其标记为已回答吗?

标签: spring hibernate spring-data


【解决方案1】:

在为 JPATransactionManager 启用日志记录方面,这对我有用: 1.下载logback jars(logback-classic-1.0.1.jar,logback-core-1.0.1.jar)并放入classpath。由于我使用的是 SLF4J,所以我也有 log4j-over-slf4j-1.6.4.jar 和 slf4j-api-1.6.4.jar。 2.使用如下logback.xml(在WEB-INF/classes中)进行配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>
            %d %p [%c] - &lt;%m&gt;%n
        </pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
    </filter>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${catalina.home}/logs/application.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${catalina.home}/logs/application-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>20MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>

    <encoder>
        <pattern>
            %d %p [%c] - &lt;%m&gt;%n
        </pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ALL</level>
    </filter>
</appender>

<logger name="org.hibernate.transaction.JDBCTransaction" level="DEBUG"/>
<logger name="org.hibernate.jdbc.ConnectionManager" level="DEBUG"/>
<logger name="org.springframework.orm.jpa.JpaTransactionManager" level="DEBUG"/>

<root level="ERROR">
    <appender-ref ref="FILE"/>
</root>
</configuration>

【讨论】:

    【解决方案2】:

    事务日志可以通过log4j.properties具体设置:

    log4j.logger.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
    

    在此上下文中感兴趣的其他日志:

    log4j.logger.org.hibernate.transaction=DEBUG
    log4j.logger.org.springframework.transaction=DEBUG
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2015-08-31
      相关资源
      最近更新 更多