多个脚本的简单Groovy Logback配置

时间:2015-11-06 09:08:07

标签: logging 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”,用于     将消息附加到每个脚本的日志文件中?
  4. 我有多个小实用程序脚本,并且不想为每个脚本设置Gradle项目。我确实将Gradle用于重要的项目,并且我已经成功地获得了更大的项目功能。

    我是Groovy和LogBack的新手,所以请提供每个脚本/配置文件的内容以及执行脚本的命令。

1 个答案:

答案 0 :(得分:0)

数目:

  1. 您可以直接在静态初始值设定项中添加FileAppender,如此问题的答案所示:Groovy + write log to file + Inject Logging Using Annotations

  2. 您还可以将上述内容与每个脚本的各个配置文件结合使用:

  3. <强> 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'
    
    1. 但是恕我直言,最好的办法是将logback's native groovy configurationlogback.groovy一起使用,以便:
    2. logback.groovy :(退回配置)

      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'
          }
      }