Tom*_*vic 127
设置
datasource {
...
logSql = true
}
Run Code Online (Sandbox Code Playgroud)
在DataSource.groovy中(根据这些说明)足以让它在我的环境中工作.似乎FAQ的部分已经过时(例如"向后多对多列"问题),所以这可能也会在此期间发生变化.
Pet*_*ter 89
我发现执行以下操作更有用,即使Hibernate的日志记录能够记录SQL以及绑定变量(这样您就可以看到传入调用的值,并轻松地在编辑器中复制SQL或其他方式).
在您Config.groovy的log4j块中添加以下内容:
log4j = {
// Enable Hibernate SQL logging with param values
trace 'org.hibernate.type'
debug 'org.hibernate.SQL'
//the rest of your logging config
// ...
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*tto 31
为grails 3.*
选项#1将以下内容添加到logback.groovy
logger("org.hibernate.SQL", DEBUG, ["STDOUT"], false)
logger("org.hibernate.type.descriptor.sql.BasicBinder", TRACE, ["STDOUT"], false)
Run Code Online (Sandbox Code Playgroud)
要么
选项#2将以下内容添加到application.yml中的dataSource.但是,此方法不记录参数值
environments:
local:
dataSource:
logSql: true
formatSql: true
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 17
试试这个:
log4j = {
...
debug 'org.hibernate.SQL'
trace 'org.hibernate.type.descriptor.sql.BasicBinder'
}
Run Code Online (Sandbox Code Playgroud)
它避免了Hibernate type包跟踪日志记录的性能问题.这适用于Hibernate 3.6及更高版本.我得到了这个:https://burtbeckwith.com/blog/?p = 1604
小智 6
解决方案仅适用于开发,而非生产.
以上所有答案都是正确的.但是它们并没有以一种很好的人类可读方式显示完整的查询.如果想查看最终(没有任何?,?)查询,您有两个选项.
A)使用log4jdbc或p6Spy代理您的jdbc连接.
B)在数据库级别上查看它.例如,使用mysql真的很容易.
找出general_log_file的位置.如果尚未激活,则激活常规日志.
mysql command line> show variables like "%general_log%";
mysql command line> set global general_log = true;
Run Code Online (Sandbox Code Playgroud)
现在一切都记录到您的日志文件中.Mac/linux示例显示您的查询的精彩流.
tail -f path_to_log_file
Run Code Online (Sandbox Code Playgroud)
接下来对我有用:
# ...
hibernate:
format_sql: true # <<<<<<< ADD THIS <<<<<<<
cache:
queries: false
use_second_level_cache: true
# ...
environments:
development:
dataSource:
logSql: true // <<<<<<< ADD THIS <<<<<<<
dbCreate: create-drop
url: jdbc:h2:mem:...
# ...
Run Code Online (Sandbox Code Playgroud)
// ...
appender('STDOUT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%level %logger - %msg%n"
}
}
// >>>>>>> ADD IT >>>>>>>
logger 'org.hibernate.type.descriptor.sql.BasicBinder', TRACE, ['STDOUT']
logger 'org.hibernate.SQL', TRACE, ['STDOUT']
// <<<<<<< ADD IT <<<<<<<
root(ERROR, ['STDOUT'])
def targetDir = BuildSettings.TARGET_DIR
// ...
Run Code Online (Sandbox Code Playgroud)
来源: http: //sergiodelamo.es/log-sql-grails-3-app/