Как я могу использовать 'log' внутри класса src / groovy / - PullRequest
15 голосов
/ 05 апреля 2010

Я сталкиваюсь с этой ошибкой:

groovy.lang.MissingPropertyException: Нет такого свойства: войти в класс: org.utils.MyClass

Вот содержание класса:

package org.utils

class MyClass {
    int organizationCount = 0

    public int getOrganizationCount(){
        log.debug "There are ${organizationCount} organization(s) found."
        return organizationCount
    }

}

Нужно ли добавить оператор импорта? Что мне нужно добавить? Обратите внимание, что класс находится в src / groovy / org / utils. Я знаю, что переменная 'log' доступна в контроллерах, службах и т. Д. Не уверен в классах 'src'.

Спасибо.

Ответы [ 5 ]

7 голосов
/ 06 мая 2011

В Groovy 1.8 вы также можете аннотировать класс с помощью @Log (для java.util.logging) или @Log4j (для log4j), и он "волшебным образом" будет иметь свойство log. Подробнее см. http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes#Groovy1.8releasenotes-@Log.

PS .: Если вы используете java.util.logging, вызов log.debug все равно будет неудачным, потому что нет метода debug.

5 голосов
/ 28 июля 2016

В Grails 3, системой ведения журнала по умолчанию является logback. Простое добавление аннотации @ Slf4j в ваш класс src / groovy позаботится обо всем.

import groovy.util.logging.Slf4j

@Slf4j
class MyUtil {
3 голосов
/ 05 апреля 2010

Переменная log вводится grails и поэтому доступна только в определенных для grails классах, таких как контроллеры, службы и т. Д., И я не думаю, что вы можете «импортировать» это каким-либо образом.

За пределами этих классов вам просто нужно регулярно использовать log4j, т.е.

Logger.getLogger(MyClass.class).debug()
0 голосов
/ 17 марта 2017

Ну, я сделал это в Grails 3.1.8, который использует Logback.

import org.apache.commons.logging.LogFactory

public class MyClass{

   static final LOG = LogFactory.getLog(this)

   def function(){
     LOG.debug "Debug message"
   }

   static staticFunction(){
     LOG.debug "Another debug message"
   }
}
0 голосов
/ 29 июля 2016

Log4j является одним из лучших лесозаготовок для заводной

import groovy.util.logging.Log4j

@Log4j
public class MyClass{
//Use for logger check
public static void myMethod(){
    //log.error(null, "This is the log message", throwable)

    //log.error(null, "This is the log message", throwable)

    //log.info("This is the message for info")

    //log.debugg("This is the message for debugging")
}
}

Log4j.properties

# Define the root logger with appender file
log =folderpath
log4j.rootLogger=INFO, R, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%C:%L [%t]  - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${log}/filename.log

log4j.appender.R.MaxFileSize=2048KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern="%d %5p %c{1}:%L - %m%n"
# %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%C:%L [%t]  - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Надеюсь, это поможет вам ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...