我在Web服务器应用程序中运行Hibernate,使用Jetty Web服务器和servlet引擎。 Hibernate是通过hibernate.properties初始化的。初始化后,日志文件中会出现以下内容:
Mar 13, 2017 6:58:56 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.7.Final}
Mar 13, 2017 6:58:56 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000205: Loaded properties from resource hibernate.properties: {hibernate.c3p0.timeout=500, javax.persistence.jdbc.user=sa, hibernate.c3p0.max_statements=50, hibernate.c3p0.max_size=20, hibernate.dialect=org.hibernate.dialect.H2Dialect, hibernate.c3p0.idle_test_period=2000, javax.persistence.jdbc.url=jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE, hibernate.format_sql=true, javax.persistence.jdbc.driver=org.h2.Driver, hibernate.c3p0.min_size=5, hibernate.hbm2ddl.auto=validate, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, javax.persistence.jdbc.password=sa}
请注意最后一行末尾的javax.persistence.jdbc.password=sa
。我不希望我的数据库密码出现在日志文件中,因为它存在安全风险。例如,C3P0连接池服务更加良性:
Mar 13, 2017 6:58:56 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure
INFO: HHH10001001: Connection properties: {user=sa, password=****}
有没有办法阻止Hibernate在开始时记录属性文件的全部内容?我不想改变整体日志记录级别。
答案 0 :(得分:1)
查看org.hibernate.cfg.Environment
中的Hibernate 5.0.11中的代码(第198行)如果设置了Hibernate,它将掩盖hibernate.connection.password
的值。
但是,您似乎正在设置值javax.persistence.jdbc.password
。如果您切换到使用hibernate.connection.password
,这应该可以。