Scala:试图让log4j正常工作

时间:2011-01-09 20:59:27

标签: scala logging

Scala newb(这是我使用它的第二天)。我想让我的Scala脚本中的log4j日志记录工作。脚本和结果如下,任何关于出了什么问题的想法?

[sean@ibmp2 pybackup]$ cat backup.scala
import org.apache.log4j._

val log = LogFactory.getLog()

log.info("started backup")
[sean@ibmp2 pybackup]$ scala -cp log4j-1.2.16.jar:. backup.scala
/home/sean/projects/personal/pybackup/backup.scala:1: error: value apache is not a member of package org
import org.apache.log4j._
           ^
one error found

5 个答案:

答案 0 :(得分:2)

我在Windows下重现它:' - classpath'的分隔符必须是';'那里(不是':')。你使用cygwin还是某种unix模拟器?

但Scala脚本在classpath中没有当前目录的任何地方工作。尝试使用:

$ scala -cp log4j-1.2.16.jar backup.scala

JFI:LogFactory是一类slf4j库(不是log4j)。

<强>更新

另一种可能的情况:在类路径中破坏jar,可能在下载期间或其他方面。 Scala解释器仅报告包的不可用成员。

$ echo "qwerty" > example.jar
$ scala -cp example.jar backup.scala
backup.scala:1: error: value apache is not a member of package org
...

需要检查jar文件的内容:

$ jar -tf log4j-1.2.16.jar
...
org/apache/log4j/Appender.class
...

答案 1 :(得分:1)

你还记得把log4j.jar放在你的类路径中吗?

答案 2 :(得分:0)

当使用Eclipse开始使用Scala Development进行类似的问题时,做一个干净的构建解决了这个问题。

猜猜Scala工具还不成熟等。

答案 3 :(得分:-1)

您可以尝试使用Configgy,而不是直接使用log4j。 Scala Way™与log4j以及配置文件一起使用。它也适用于SBT和Maven。

答案 4 :(得分:-1)

I asked and answered this question myself,看看:

  

将其放在src/main/resources/logback.xml下。当SBT进行工件装配时,它将被复制到正确的位置。