2015-03-19 2 views
0

Так что, когда я наивная вещь и просто использовать:Как использовать Logger в классе gradle buildSrc?

logger.info("something") 

я получаю:

<myfile>.groovy: 52: Apparent variable 'logger' was found in a 
static scope but doesn't refer to a local variable, static field or class. 
Possible causes: 
You attempted to reference a variable in the binding or an 
instance variable from a static context. 
You misspelled a classname or statically imported field. 
Please check the spelling. 
You attempted to use a method 'logger' but left out brackets 
in a place not allowed by the grammar. 
    @ line 52, column 9. 
     logger?.info("Resolving ${projectPath} to ${version}") 

Я пробовал много вариантов, как создание переменной класса в конструкторе:

static private log = Logging.getLogger(MyClass) 

Это не удается, так как регистрирование находится в статическом масштабе ...

Какая здесь магия?

+0

Похоже, что ведение журнала градиента имеет смысл только в рамках проекта или контекста задачи. –

+0

Да, определенно. Вам нужно, чтобы экземпляр 'project' использовал регистратор. Поэтому реализуйте «Плагин» или расширьте «DefaultTask». – Opal

ответ

0

Gradle User Guide, chapter 18 говорит, что вы можете просто использовать SLF4j в своем buildSrc. Мне повезло с аннотацией @ Slf4j в классе. Например:

import groovy.util.logging.Slf4j 

@Slf4j 
class YourClass { 
     def logIt(){ 
      log.info 'This is logged in Gradle' 
     } 
} 
Смежные вопросы