Java 冬眠+;Logback,不登录文件

Java 冬眠+;Logback,不登录文件,java,hibernate,file,logging,logback,Java,Hibernate,File,Logging,Logback,我正在使用Hibernate 3.1.3和Logback(经典+核心)1.1.7 这是我的logback.xml <appender name="hibernate-sql" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/hibernate-sql.log</file> <encoder class="ch.qos.logback.c

我正在使用Hibernate 3.1.3和Logback(经典+核心)1.1.7

这是我的logback.xml

<appender name="hibernate-sql"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/hibernate-sql.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <FileNamePattern>c:/temp/hibernate-sql.%i.log.zip</FileNamePattern>
      <MinIndex>1</MinIndex>
      <MaxIndex>10</MaxIndex>
    </rollingPolicy>

    <triggeringPolicy
    class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>2MB</MaxFileSize>
    </triggeringPolicy>

</appender>

  <logger name="org.hibernate.hql">
    <level value="TRACE"/>
    <appender-ref ref="hibernate-sql"/>
  </logger>

  <logger name="org.hibernate.SQL">
    <level value="TRACE"/>
    <appender-ref ref="hibernate-sql"/>
  </logger>

  <root level="TRACE">
    <!--<appender-ref ref="FILE"/>-->
    <!--<appender-ref ref="STDOUT"/>-->
  </root>

为什么它登录到控制台而不是我的文件中,即使它很好地创建了文件?谢谢。

尝试向logback.xml文件添加
debug=“true”
,如前所述。这将有助于理解日志的真正配置方式。

尝试向logback.xml文件中添加
debug=“true”
,如前所述。这将有助于理解日志记录的实际配置。

您的附件名称不正确

<appender-ref ref="FILE"/>


应该是

您的附件名称不正确

<appender-ref ref="FILE"/>


应该是

我更改了您原始代码的某些部分,方法如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
   <appender name="hibernate-sql" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>.../logs/hibernate-sql.log</file> <!-- Here i add the full path to log file -->
      <encoder>
         <Pattern>%green(%d) %highlight(%-5level) %cyan(%logger{0}) mdc=%X{id} %msg %n</Pattern>
      </encoder>
      <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
         <FileNamePattern>c:/temp/hibernate-sql.%i.log.zip</FileNamePattern>
         <MinIndex>1</MinIndex>
         <MaxIndex>10</MaxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>2MB</MaxFileSize>
      </triggeringPolicy>
   </appender>
   <appender name="SERVER" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file></file> <!-- Full path to log file -->
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <!-- rollover daily -->
         <FileNamePattern></FileNamePattern>
      </rollingPolicy>
      <encoder>
         <Pattern>%green(%d) %highlight(%-5level) %cyan(%logger{0}) mdc=%X{id} %msg %n</Pattern>
      </encoder>
   </appender>
   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <FileNamePattern>c:/temp/hibernate-sql.%i.log.zip</FileNamePattern>
      <MinIndex>1</MinIndex>
      <MaxIndex>10</MaxIndex>
   </rollingPolicy>
   <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>2MB</MaxFileSize>
   </triggeringPolicy>
   <logger name="org.hibernate" level="INFO"> <!-- Here i changed your block -->
      <appender-ref ref="hibernate-sql" />
   </logger>
   <root level="INFO">
      <appender-ref ref="SERVER" />
   </root>
</configuration>

…/logs/hibernate-sql.log
%绿色(%d)%highlight(%-5level)%cyan(%logger{0})mdc=%X{id}%msg%n
c:/temp/hibernate sql.%i.log.zip
1.
10
2MB
%绿色(%d)%highlight(%-5level)%cyan(%logger{0})mdc=%X{id}%msg%n
c:/temp/hibernate sql.%i.log.zip
1.
10
2MB

基本上,我添加了日志的完整路径,并更改了“HibernateSQL”配置。您可以尝试适应您的情况

我更改了您原始代码的某些部分,方法如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
   <appender name="hibernate-sql" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>.../logs/hibernate-sql.log</file> <!-- Here i add the full path to log file -->
      <encoder>
         <Pattern>%green(%d) %highlight(%-5level) %cyan(%logger{0}) mdc=%X{id} %msg %n</Pattern>
      </encoder>
      <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
         <FileNamePattern>c:/temp/hibernate-sql.%i.log.zip</FileNamePattern>
         <MinIndex>1</MinIndex>
         <MaxIndex>10</MaxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>2MB</MaxFileSize>
      </triggeringPolicy>
   </appender>
   <appender name="SERVER" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file></file> <!-- Full path to log file -->
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <!-- rollover daily -->
         <FileNamePattern></FileNamePattern>
      </rollingPolicy>
      <encoder>
         <Pattern>%green(%d) %highlight(%-5level) %cyan(%logger{0}) mdc=%X{id} %msg %n</Pattern>
      </encoder>
   </appender>
   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <FileNamePattern>c:/temp/hibernate-sql.%i.log.zip</FileNamePattern>
      <MinIndex>1</MinIndex>
      <MaxIndex>10</MaxIndex>
   </rollingPolicy>
   <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>2MB</MaxFileSize>
   </triggeringPolicy>
   <logger name="org.hibernate" level="INFO"> <!-- Here i changed your block -->
      <appender-ref ref="hibernate-sql" />
   </logger>
   <root level="INFO">
      <appender-ref ref="SERVER" />
   </root>
</configuration>

…/logs/hibernate-sql.log
%绿色(%d)%highlight(%-5level)%cyan(%logger{0})mdc=%X{id}%msg%n
c:/temp/hibernate sql.%i.log.zip
1.
10
2MB
%绿色(%d)%highlight(%-5level)%cyan(%logger{0})mdc=%X{id}%msg%n
c:/temp/hibernate sql.%i.log.zip
1.
10
2MB
基本上,我添加了日志的完整路径,并更改了“HibernateSQL”配置。您可以尝试适应您的情况

以下是我的解决方案:

要使用
Logback 1.1.7
Hibernate 3.1.3
获取日志,我们需要:

  • slf4j api 1.7.5
  • jul-to-slf4j 1.7.6
  • jul-over-slf4j 1.7.6
  • 其他版本也可以,但最重要的是jul-over-slf4j依赖关系。

    以下是我的解决方案:

    要使用
    Logback 1.1.7
    Hibernate 3.1.3
    获取日志,我们需要:

  • slf4j api 1.7.5
  • jul-to-slf4j 1.7.6
  • jul-over-slf4j 1.7.6

  • 其他版本也可以工作,但最重要的是jul-over-slf4j依赖关系。

    我在原始POST中添加调试并添加关于logback的日志我在原始POST中添加调试并添加关于logback的日志post@Jon将第一行更改为:并排除:logs/hibernatesql。log@Julios迪亚斯:这样做,我得到一个java.lang.IllegalStateException:“File”选项必须是set@Jon将第一行更改为:并排除:logs/hibernatesql。log@JuliosDias:这样做,我得到一个java.lang.IllegalStateException:必须设置“File”选项