Xml 打印日志文件中的所有实体(域)
我正在为我的web应用程序使用log4j2.xml,它运行良好。问题是,它也在打印所有的域信息。我使用的是hibernate+spring。由于域包含用户类,因此它也在日志文件中打印密码。。 下面是我的log4j.xmlXml 打印日志文件中的所有实体(域),xml,hibernate,spring-mvc,jetty,log4j2,Xml,Hibernate,Spring Mvc,Jetty,Log4j2,我正在为我的web应用程序使用log4j2.xml,它运行良好。问题是,它也在打印所有的域信息。我使用的是hibernate+spring。由于域包含用户类,因此它也在日志文件中打印密码。。 下面是我的log4j.xml <?xml version="1.0" encoding="UTF-8"?> <configuration status="trace"> <appenders> <RollingRandomAcces
<?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>
%d{ISO8601}%-5p[%t]:[%c{1}]%m%n-%X{ElapsedTime}-%X{ByteSize}-%X{uniqueID}-%X{HttpMethod}-%X{URL}-
我的session-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>
java:comp/env/jdbc/onboard
org.hibernate.dialogue.mysqldialogue
biz.neustar.onboarding.domain
日志文件中的消息是
[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=admin@tpgsi.com, 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}
[Printer]列出实体:
------2014-03-06 13:35:59178调试[qtp19318917-21:http://0:0:0:0:0:1:8080/OnBoarding/index.do]:[Printer]biz.neustar.OnBoarding.domain.User{lastName=TP,updateDate=2014-02-28 20:12:02,companyName=TurningPoint,password=admin,userOid=1,phoneNo=1.234567890,isLogged=Y,organizationStagingList=,email=admin@tpgsi.com,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:59178调试[qtp19318917-21:http://0:0:0:0:0:1:8080/OnBoarding/index.do]:[Printer]biz.neustar.OnBoarding.domain.UserAccess{users=,accessId=1,accessType=ADMINISTRATOR}
------2014-03-06 13:35:59178调试[qtp19318917-21:http://0:0:0:0:1:8080/OnBoarding/index.do]:[Printer]biz.neustar.OnBoarding.domain.UserStatus{statusId=1,users=,statusType=ACTIVE}
我认为您在方括号之间的第一部分([qtp19318917-21:http://0:0:0:0:0:1:8080/onboard/index.do])中看到的是线程名称
如果此值太长,您可以使用[%.30t]
更改布局模式中的[%t]
,以指定所需的最大字符数。()问题是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>