ロギング

ドメインクラスを操作したときにどんなSQLが実行されているのかログを見たいと思って調べてます。

あたりを参考に見てます。どうもGrailsでは、log4jを使っていて、grails-app/conf/Config.groovy というファイルにログに関する設定を記述すると、アプリケーションの起動時にlog4.propertiesを生成しているみたいです。Config.groovyの該当する部分を抜き出すとこんな感じです。

// log4j configuration
log4j {
    appender.stdout = "org.apache.log4j.ConsoleAppender"
    appender.'stdout.layout'="org.apache.log4j.PatternLayout"
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'
    appender.stacktraceLog = "org.apache.log4j.FileAppender"
    appender.'stacktraceLog.layout'="org.apache.log4j.PatternLayout"
    appender.'stacktraceLog.layout.ConversionPattern'='[%r] %c{2} %m%n'
    appender.'stacktraceLog.File'="stacktrace.log"
    rootLogger="error,stdout"
    logger {
        grails="debug"
        StackTrace="error,stacktraceLog"
        org {
            codehaus.groovy.grails.web.servlet="error"  //  controllers
            codehaus.groovy.grails.web.pages="error" //  GSP
            codehaus.groovy.grails.web.sitemesh="error" //  layouts
            codehaus.groovy.grails."web.mapping.filter"="error" // URL mapping
            codehaus.groovy.grails."web.mapping"="error" // URL mapping
            codehaus.groovy.grails.commons="info" // core / classloading
            codehaus.groovy.grails.plugins="error" // plugins
            codehaus.groovy.grails.orm.hibernate="error" // hibernate integration
            springframework="off"
            hibernate="off"
        }
    }
    additivity.StackTrace=false
}

Groovyで書いた設定ファイルを読みなれてない人間には、これをカスタマイズするのはなかなか敷居が高いです。。環境ごとに切り替えもできるみたいです。

なお、ドメインクラスやコントローラクラスでは、logというプロパティが自動で設定されるので、

    log.info "テスト!"

見たいに書くとログ出力が使えます。これは便利。