Grailsのログ出力設定
Grailsのログ出力設定って結構はまりやすい気がしてて、自分でもかなり悩んだ気がするので、参考までにログ出力関係の設定を貼っておきます。
// log4j configuration log4j { // for Debug appender.stdout = "org.apache.log4j.ConsoleAppender" appender.'stdout.layout'="org.apache.log4j.PatternLayout" appender.'stdout.layout.ConversionPattern'='%d{yyyy-MMM-dd HH:mm:ss,SSS} [%p] (%c{2}) %m%n' // for Error appender.stacktraceLog = "org.apache.log4j.FileAppender" appender.'stacktraceLog.layout'="org.apache.log4j.PatternLayout" appender.'stacktraceLog.layout.ConversionPattern'='%d{yyyy-MMM-dd HH:mm:ss,SSS} [%p] (%c{2}) %m%n' appender.'stacktraceLog.File'="log/stacktrace.log" // Default rootLogger="error,stdout" logger { // for My application grails { app { controller='info' service='info' task='info' // quartzプラグインのJobsアーティファクト用 } } // for others library / framework 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" } //org.'springframework.security'='info' // Acegi plugin org.'springframework.security'='debug' // Acegi plugin } additivity { StackTrace=false }
こんな感じです。
アーティファクト系は、logger > grails > app の下にパッケージ名を追加すればOKです。
パッケージ名を調べる方法
パッケージ名が何か分からなければ、そのアーティファクトに
log.error "とりあえず出力!!!"
と書いて、出力されたログを見ます。
2009-3-01 12:11:30,607 [ERROR] (task.HogeJob) とりあえず出力!!!
とでていれば、このアーティファクトHogeJobのパッケージは"task"になります。
上の例はquartzプラグインなんですが、アーティファクトサフィックスは"Job"なのに、パッケージは"task"ってなんでやねん!