【问题标题】:Scala : trying to get log4j workingScala:试图让 log4j 工作
【发布时间】:2016-01-22 19:14:19
【问题描述】:

Scala newb 在这里(这是我使用它的第二天)。我想让 log4j 日志记录在我的 Scala 脚本中工作。脚本和结果如下,有什么想法吗?

[sean@ibmp2 pybackup]$ cat backup.scala 导入 org.apache.log4j._ val 日志 = LogFactory.getLog() log.info("开始备份") [sean@ibmp2 pybackup]$ scala -cp log4j-1.2.16.jar:.备份.scala /home/sean/projects/personal/pybackup/backup.scala:1: 错误:值 apache 不是包 org 的成员 导入 org.apache.log4j._ ^ 发现一个错误

【问题讨论】:

标签: scala logging


【解决方案1】:

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

但是 Scala 脚本可以在类路径中没有当前目录的任何地方工作。尝试使用:

$ 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
...

【讨论】:

  • Centos Linux 出现问题
  • @Fred Scala 来自系统 rpm 包还是在 HOME 目录自定义安装?
  • 我下载了最新的scala版本并安装在/usr/local下
【解决方案2】:

您是否记得将 log4j.jar 放入您的类路径中?

【讨论】:

  • 我的 log4j jar 文件与我的 .scala 源位于同一目录中,我尝试使用 -cp log4j-x.x.jar 作为参数运行 scala,似乎没有任何区别跨度>
【解决方案3】:

在开始使用 Eclipse 进行 Scala 开发时遇到了类似的问题,进行干净的构建解决了这个问题。

猜想 Scala 工具还不成熟。

【讨论】:

    【解决方案4】:

    您可以尝试使用Configgy,而不是直接使用log4j。这是使用 log4j 以及配置文件的 Scala Way™。它还可以很好地与 SBT 和 Maven 配合使用。

    【讨论】:

      【解决方案5】:

      I asked and answered this question myself,看看:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-01
        • 2011-04-13
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-02
        • 2011-10-02
        相关资源
        最近更新 更多