log4j在ubuntu上没有在groovy中打印任何内容

时间:2012-05-21 10:30:16

标签: groovy log4j

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

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

cat 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

默认配置是否应该创建控制台appender并输出到控制台?

根据this answer,我尝试添加对org.apache.log4j.BasicConfigurator.configure();的调用,但这并没有改变任何内容。

2 个答案:

答案 0 :(得分: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"

有一个blog post here我发现以编程方式设置Log4j

或者,作为sreejith says,将log4j属性文件添加到类路径中(或将其加载)

要更改默认的根appender,您可以执行以下操作:

@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

不同的图案符号can be found here

答案 1 :(得分:1)

尝试使用以下内容创建文件

log4j.rootCategory = INFO,stdout

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

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