Groovy的简单的logback配置为多个脚本
问题描述:
我有以下几点: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.bar
和groovy bar.groovy
执行。
问题:
- 什么行代码可以被添加到每个脚本附加日志 消息“foo.log”及“bar.log”?
- 是否可以创建个人 配置文件,例如“logback_foo.groovy”和 “logback_bar.groovy”,以将日志消息附加到日志文件中?
- 是否可以将 通用配置文件(例如“logback.groovy”)用于 将消息追加到每个脚本的日志文件?
我有多个小的实用程序脚本,不想通过设置每个脚本的Gradle项目的努力。我确实将Gradle用于重要的项目,并且我已经成功地获得了更大的项目功能。
我是Groovy和LogBack的新手,请提供每个脚本/配置文件的内容以及执行脚本的命令。
答
答案:
您可以直接在静态初始化添加
FileAppender
如图这个问题的答案:Groovy + write log to file + Inject Logging Using Annotations您还可以结合上面的每一个人配置文件脚本:
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 configuration与
logback.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'
}
}
第三个问题的回答完美的作品。 – TeamDitto