1

我正在尝试让 Hello World 应用程序与 groovy/log4j/ubuntu 一起工作(与 Groovy 1.7.10 一起工作)。默认情况下,我没有输出到控制台:

  • 创建 ~/.groovy/lib,并将最新的 log4j jar 下载到那里。
  • 创建了一个.groovy:

猫 a.groovy:

#! /usr/bin/groovy
import org.apache.log4j.Logger
def log = Logger.getLogger(getClass())

println "Log starting"
log.info("This is Info")
log.error("This is error")
println "Log finished"

授予它权限并运行它,并得到:

Log starting
Log finished

默认配置不应该创建一个控制台附加程序并输出到控制台吗?

根据这个答案,我尝试添加对 的调用org.apache.log4j.BasicConfigurator.configure();,但这并没有改变任何东西。

4

2 回答 2

4

您需要设置级别,以便它显示INFO消息...

尝试这个:

#! /usr/bin/groovy

// Grab Log4j
@Grab( 'log4j:log4j:1.2.16' )
import org.apache.log4j.Level
import org.apache.log4j.Logger

def log = Logger.getLogger( getClass() )

Logger.rootLogger.level = Level.INFO

println "Log starting"
log.info "This is Info"
log.error "This is error"
println "Log finished"

我发现这里有一篇博客文章显示了以编程方式设置 Log4j

或者,正如sreejith 所说,将 log4j 属性文件添加到您的类路径(或加载它)

要更改默认的根附加程序,您可以执行以下操作:

@Grab( 'log4j:log4j:1.2.16' )
import org.apache.log4j.Level
import org.apache.log4j.ConsoleAppender
import org.apache.log4j.PatternLayout
import org.apache.log4j.Logger
def log = Logger.getLogger(getClass())

Logger.rootLogger.with {
  level = Level.INFO
  removeAllAppenders()
  addAppender( new ConsoleAppender( new PatternLayout( '%d %-5p [%t]: %m%n' ) ) )
}

println "Log starting"
log.info "This is Info"
log.error "This is error"
println "Log finished"

打印:

2012-05-21 11:48:48,225 INFO  [Thread-29]: This is Info

可以在这里找到不同的模式符号

于 2012-05-21T10:34:00.390 回答
1

尝试创建一个包含以下内容的文件

log4j.rootCategory=INFO,标准输出

log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:% 4L - %m%n

并将其添加到项目的类路径中。

于 2012-05-21T10:36:37.943 回答