【问题标题】:Simple Groovy Logback Configuration for Multiple Scripts多个脚本的简单 Groovy Logback 配置
【发布时间】:2023-03-09 04:35:01
【问题描述】:

我有以下几点:

C:\Scripts\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:\Scripts\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 的新手,所以请提供每个脚本/配置文件的内容以及执行脚本的命令。

【问题讨论】:

    标签: logging groovy logback


    【解决方案1】:

    答案:

    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'
    
    1. 但是恕我直言,最好的方法是利用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'
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2012-02-03
      相关资源
      最近更新 更多