2015-11-06 40 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