Using logback in Grails 3
Grails 3 เปลี่ยนการ Config log4j มาใช้งาน logback ซึ่งทำให้ การ config ต่างไปจากเดิมพอสมควร
//before version 3.x
log4j = {
…
info ‘grails.app.controllers’
debug ‘grails.app.controllers.foobarsystem.hello’
info ‘grails.app.services’
…
}
การ config ตัวอย่างสามารถดูได้จาก logback.groovy ที่ grails project generate ออกมา ในส่วนการ config ใน version 3.0.x-3.2.x จะแตกต่างจาก 3.3 เป็นต้น
หากต้องการให้ log ใน artifact ของ grails ตัวอย่งเช่น controller services ให้เพิ่ม config ใน logback ดังนนี้
//version 3.0–3.2
//default grails logging
logger ‘grails.app.taglibs’, DEBUG, [‘STDOUT’], false
logger ‘grails.app.taglib’, DEBUG, [‘STDOUT’], false
logger ‘grails.app.interceptors’, DEBUG, [‘STDOUT’], false
logger ‘grails.app.controllers’, DEBUG, [‘STDOUT’], false
logger ‘grails.app.services’, DEBUG, [‘STDOUT’], false
โดยต้องมีการกำหนด parameter 4 ตัวด้วยกันคือ package, log mode, appender และ additive
การใช้งาน @Slf4j สำหรับ src สามารถอ้างอิง package ได้เลยเช่น
package foo.bar.hello
@Slf4j
class Hello{
def helloWord(){
log.debug("hello world")
}
}
ในกรณีนี้ให้ config ใน logback ดังนี้ครับ
logger 'foo.bar.hello', DEBUG, [‘STDOUT’], false //กรณีทั้ง package
logger 'foo.bar.hello.Hello', DEBUG, [‘STDOUT’], false //เฉพาะ Class
หากต้องการ config appender แบบ rolling สามารถดูได้ที่นี้ครับ
CONFIGURING ROLLING LOGGING WITH LOGBACK