2015-11-06 38 views
1

我有以下幾點:Groovy的簡單的logback配置爲多個腳本

C:\腳本\的Groovy \ foo.groovy

@Grab (group = 'ch.qos.logback', module = 'logback-classic', version = '1.1.3') 
def logger = org.slf4j.LoggerFactory.getLogger ('foo') 
logger.info ("Hello, Foo!') 

C:\腳本\的Groovy \ bar.groovy

@Grab (group = 'ch.qos.logback', module = 'logback-classic', version = '1.1.3') 
def logger = org.slf4j.LoggerFactory.getLogger ('bar') 
logger.info ("Hello, Bar!') 

腳本分別通過groovy foo.bargroovy bar.groovy執行。

問題:

  1. 什麼行代碼可以被添加到每個腳本附加日誌 消息「foo.log」及「bar.log」?
  2. 是否可以創建個人 配置文件,例如「logback_foo.groovy」和 「logback_bar.groovy」,以將日誌消息附加到日誌文件中?
  3. 是否可以將 通用配置文件(例如「logback.groovy」)用於 將消息追加到每個腳本的日誌文件?

我有多個小的實用程序腳本,不想通過設置每個腳本的Gradle項目的努力。我確實將Gradle用於重要的項目,並且我已經成功地獲得了更大的項目功能。

我是Groovy和LogBack的新手,請提供每個腳本/配置文件的內容以及執行腳本的命令。

回答

0

答案:

  1. 您可以直接在靜態初始化添加FileAppender如圖這個問題的答案:Groovy + write log to file + Inject Logging Using Annotations

  2. 您還可以結合上面的每一個人配置文件腳本:

logback_foo.groovy

foo { 
    file = 'foo.log' 
} 

並使用ConfigSlurper來閱讀:

def config = new ConfigSlurper().parse(new File('logback_foo.groovy').toURL()) 
assert config.foo.file == 'foo.log' 
  • 但IMHO,最好的辦法是做到這一點是利用logback's native groovy configurationlogback.groovy,所以的是:
  • logback.groovy:(的logback配置)

    appender('console', ConsoleAppender) { 
        encoder(PatternLayoutEncoder) { 
         pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n" 
        } 
    } 
    
    appender('foo', FileAppender) { 
        file = 'foo.log' 
        append = true 
        encoder(PatternLayoutEncoder) { 
         pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n" 
        } 
    } 
    
    appender('bar', FileAppender) { 
        file = 'foo.log' 
        append = true 
        encoder(PatternLayoutEncoder) { 
         pattern = "%d{HH:mm:ss.SSS} %-5level [%thread] - %msg%n" 
        } 
    } 
    
    logger('Foo', INFO, ['console', 'foo']) 
    logger('Bar', INFO, ['bar']) 
    

    foo.groovy:(bar.groovy有異曲同工之處)

    @Grapes([ 
        @GrabConfig(systemClassLoader=true), 
        @Grab(group='ch.qos.logback', module='logback-classic', version='1.1.3') 
    ]) 
    
    import groovy.util.logging.Slf4j 
    
    @Slf4j 
    class Foo { 
        static main(args) { 
         log.debug 'Foo debug' 
         log.info 'Foo info' 
         log.warn 'Foo warn' 
         log.error 'Foo error' 
        } 
    } 
    
    +0

    第三個問題的回答完美的作品。 – TeamDitto