Ebean是play内置的ORM框架,play2.0-2.3版本默认用的数据库连接池是bonecp,因此ebean的sql log可以通过配置application.conf,设置
db.default.logStatements=true
logger.com.jolbox=DEBUG
但是在2.4版本开始,play团队不再建议通过application.conf中配置logger,推荐使用conf/logback.xml进行配置,且由于2.4版本开始play默认使用hikaricp作为默认的数据库连接池,com.jolbox不再起效,另外hikaricp不提供log sql的方法,所以将com.jolbox更改为com.zaxxers是无效的(坑太多了不忍直视)。
说了这么多,其实解决办法很简单,ebean中是通过TransactionManager中的SQL_LOGGER进行sql log的,所以只需要在logback.xml中设置(level可以根据需要更改)
另外stackoverflow中还有介绍一些其他办法的,一并回答一下,例如
-
Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
原因:getAdminLogging在ebean4.6版本中没有该api
- 使用jdbcdslog的,即使在logback.xml中设置了logger也无效,具体原因没有去了解。
首发于个人博客,文章地址:http://www.huzhonghua.cn/2/hzhprivate/diary/diary!detail.action?id=8ac...
转到segmentfault希望更多遇到这个问题的人可以看到