log4j没有在ubuntu上用groovy打印任何东西

log4j没有在ubuntu上用groovy打印任何东西,groovy,log4j,Groovy,Log4j,我正在尝试使用groovy/log4j/ubuntu(使用groovy 1.7.10)开发一个Hello World应用程序。默认情况下,我没有得到控制台的输出: 创建了~/.groovy/lib,并将最新的log4jjar下载到其中 创建了一个.groovy: 类别a.groovy: #! /usr/bin/groovy import org.apache.log4j.Logger def log = Logger.getLogger(getClass()) println "Log s

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

  • 创建了~/.groovy/lib,并将最新的log4jjar下载到其中
  • 创建了一个.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()的调用,但这并没有改变任何事情。

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

试试这个:

#! /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的程序

或者,在类路径中添加一个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

不同的图案符号

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

试试这个:

#! /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的程序

或者,在类路径中添加一个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

不同的图案符号尝试创建包含以下内容的文件

log4j.rootCategory=INFO,标准输出

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


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

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

log4j.rootCategory=INFO,标准输出

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


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

我认为getClass()在这里有点奇怪。。。您正在编写一个一次性脚本,它不是一个真正的classi,我认为getClass()在这里有点奇怪。。。您正在编写一个一次性脚本,但它实际上不是一个类。当我们正在编写时,您是否有一个关于如何配置控制台附加程序的转换模式以包含日期/时间的快速片段?@ripper234在我们正在编写时将该信息添加到回答中,关于如何配置console appender的转换模式以包含日期/时间,您是否有一个快速片段?@ripper234将该信息添加到了答案中