2014-03-06 37 views
1

我正在为我的web应用程序使用log4j2.xml,它工作正常。问题是,它也打印所有的域信息。我使用休眠+ spring.Since域包含用户类是打印密码,还可以在日志文件.. 我的log4j.xml低于..打印日志文件中的所有实体(域)

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="trace"> 
    <appenders> 
      <RollingRandomAccessFile name="ONBOARDING_LOG" fileName="C:/jetty-distribution-9.0.6.v20130930/logs/onboarding.log" filePattern="C:/jetty-distribution-9.0.6.v20130930/logs/onboarding.log.%i" append="true" immediateFlush="true"> 
        <PatternLayout> 
          <pattern>%d{ISO8601} %-5p [%t]: [%c{1}] %m%n-%X{ElapsedTime}-%X{ByteSize}-%X{uniqueID}-%X{HttpMethod}-%X{URL}-</pattern> 
        </PatternLayout> 
        <Policies> 
          <SizeBasedTriggeringPolicy size="250 MB"/> 
        </Policies> 
        <DefaultRolloverStrategy max="10"/> 
      </RollingRandomAccessFile> 
    </appenders> 

    <loggers> 

      <root level="DEBUG"> 
        <appender-ref ref="ONBOARDING_LOG"/> 
      </root> 
    </loggers> 

和我的会话级factory.xml是...

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>java:comp/env/jdbc/Onboarding</value> 
    </property> 
</bean> 

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 

    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
     </props> 
    </property> 
    <property name="packagesToScan"> 
     <list> 
      <value>biz.neustar.onboarding.domain</value> 
     </list> 
    </property> 

</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

,并从日志文件中的信息是....

[Printer] listing entities: 
    ------2014-03-06 13:35:59,178 DEBUG [qtp19318917-21:http://0:0:0:0:0:0:0:1:8080/OnBoarding/index.do]:    [Printer] biz.neustar.onboarding.domain.User{lastName=TP, updatedDate=2014-02-28 20:12:02, companyName=TurningPoint, password=admin, userOid=1, phoneNo=1.234567890, isLogged=Y, organizationStagingList=<uninitialized>, [email protected], userStatus=biz.neustar.onboarding.domain.UserStatus#1, userName=admin, firstName=Admin, createdDate=2007-05-06 00:00:00, userAccess=biz.neustar.onboarding.domain.UserAccess#1} 
     ------2014-03-06 13:35:59,178 DEBUG [qtp19318917-21:http://0:0:0:0:0:0:0:1:8080/OnBoarding/index.do]: [Printer] biz.neustar.onboarding.domain.UserAccess{users=<uninitialized>, accessId=1, accessType=ADMINISTRATOR} 
    ------2014-03-06 13:35:59,178 DEBUG [qtp19318917-21:http://0:0:0:0:0:0:0:1:8080/OnBoarding/index.do]: [Printer] biz.neustar.onboarding.domain.UserStatus{statusId=1, users=<uninitialized>, statusType=ACTIVE} 

回答

1

问题是hibernate在内部使用log4j来记录消息。我通过查看包含Printer的日志了解了这一点,它是在hibernate中定义的最终类,所以我在log4j.xml中做了一些更改。它应该在根级之前添加...我希望这将是非常有用的其他人和其他意见将高度赞赏..感谢

<loggers> 
    <logger name="org.hibernate.pretty"> 
      <level value="OFF" /> 
    </logger> 

    <logger name="org.hibernate.SQL"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.secure"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.hql.ast.AST"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.jdbc"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.transaction"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.tool.hbm2ddl"> 
     <level value="OFF"/> 
    </logger> 

    <logger name="org.hibernate.type"> 
       <level value="OFF"/> 
    </logger>