Внедрить объект журнала в классе Grails за пределами приложения grails - PullRequest
18 голосов
/ 11 сентября 2009

У меня есть класс src / groovy в моем проекте grails.

Как создать поле журнала, в которое вводится правильный регистратор для этого класса?

Есть ли регистрация общего доступа или просто log4j в граалях?

Ответы [ 3 ]

47 голосов
/ 09 октября 2009

Grails 1.X

Более Groovy способ сделать то же самое:

private static log = LogFactory.getLog(this)

Это использует тот факт, что this в статическом контексте относится кClass объекта, поэтому указанную выше строку можно скопировать из одного класса в другой без изменения.

Grails 2.X

Используйте введенную аннотацию @ Log4j в Groovy 1.8.Это добавит свойство log

import groovy.util.logging.Log4j
@Log4j 
class MyClass {

  def doIt() {
    log.info 'hello'
  }
}

Хорошее преимущество использования аннотации в том, что регистратор автоматически преобразует вызовы, такие как:

log.info 'hello'

в:

if (log.isInfoEnabled() {
  log.info 'hello'
}
10 голосов
/ 11 сентября 2009

Вы бы добавили его, как обычный класс Java:

Logger log = Logger.getLogger(getClass()) // log4j

или

Log log = LogFactory.getLog(getClass()) // commons logging
0 голосов
/ 14 апреля 2010

Использование нового Logger стандартного Log4j (getClass ()) сработало, но я зарегистрировал java.lang.Class (используя Grails 1.2.1) Эта проблема исчезла с плагином Sublog и @WithLog. См. http://www.grails.org/plugin/sublog. Этот плагин также не позволяет Trace стать Debug и Fatal Error ...!

...