Grails > ログの設定

更新日 2014-11-07
広告

ログファイルのローテーション

ログファイルをローテーション(ログファイルのサイズが一定サイズになると、新しいログファイルを作成)する方法を紹介します。 grails-app/conf/Config.groovyにて、以下のように設定します。
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'
		   
	   appenders {
	     rollingFile name:'file', file:'./logs/myapp.log'
	     console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
	   }
	   root {
	     error 'stdout', 'file'
	   }

}
'rollingFile' の一行で、ローテーションが行われます。

static loggerによるログ出力

コントローラなどでログを出力する場合は、'log'というインスタンス変数が自動的に生成されるので、それを使えばログを出力できます。 それ以外のクラスでログを出力する場合は、以下のように、staticロガーを用意する必要があります。
package some.package

import org.apache.commons.logging.LogFactory

class PaginationUtils { 

  private static final log = LogFactory.getLog(this)

}
conf/Config.groovyでは、以下のようにログレベルを設定します。
log4j = {

  debug 'some.package'

コントローラやドメインの場合は、'grails.app.controllers'や'grails.app.domains'のようなプレフィックスを指定する必要がありますが、staticロガーの場合は不要です。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system