我对grails非常熟悉,但是我的sql日志记录似乎总是在生产中(tomcat6)。它在开发中按预期工作,我可以打开和关闭它。我已经禁用了我的datasource.groovy中的所有日志记录......
dataSource {
...
driverClassName = 'com.mysql.jdbc.Driver'
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
logSql = false //<-- still logs sql in production
properties {
...
}
}
environments {
production {
dataSource {
logSql = false //<-- still logs sql in production
}
}
}
我的config.groovy中的和log4j非常简单......
log4j = {
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
warn 'org.mortbay.log'
}
最后,我正在使用'war'命令构建我的项目。有谁知道这可能会在哪里设置?
答案 0 :(得分:2)
当我第一次参加制作大战时,我似乎记得遇到过这个问题。我从数据源部分删除了logSql = false,并根据需要在每个环境中使用它。事实上我从来没有把logSql = false - 我要么完全删除它,要么将其注释掉。我需要时只有logSql = true。
不确定这是否是根本原因或其他原因,但它修复了它并且我从未遇到过问题。
答案 1 :(得分:0)
最新的docs将其指定为'logSql',但我总是使用'loggingSql',因为我记得。
答案 2 :(得分:0)
您是否外部化数据源属性?如果是,则该文件可能会覆盖loggingSql属性
我认为你应该使用'loggingSql'属性。我们在生产中使用它。它的工作正常(使用Grails 2.0版本)
dataSource {
loggingSql=true
}
environments {
development {
dataSource {
username = "test"
password = "test"
loggingSql=true
}
}
production {
dataSource {
username = "prod"
password = "prod"
loggingSql=false
}
}
}