Scala:尝试让 log4j 工作

发布于 2024-10-11 10:52:47 字数 447 浏览 1 评论 0原文

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

[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

Scala newb here (it's my 2nd day of using it). I want to get log4j logging working in my Scala script. The script and the results are below, any ideas as to what's going wrong?

[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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一页 2024-10-18 10:52:47

我在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
...

I reproduce it under Windows: delimiter of '-classpath' must be ';' there (not ':'). Are you use cygwin or some sort of unix emulator?

But Scala script works anywhere without current dir in classpath. Try to use:

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

JFI: LogFactory is a class of slf4j library (not log4j).

UPDATE

Another possible case: broken jar in classpath, maybe during download or something else. Scala interpreter does report only about unavailable member of the package.

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

Need to inspect content of the jar-file:

$ jar -tf log4j-1.2.16.jar
...
org/apache/log4j/Appender.class
...
只是我以为 2024-10-18 10:52:47

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

Did you remember to put log4j.jar in your classpath?

梦一生花开无言 2024-10-18 10:52:47

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

猜测 Scala 工具还不成熟等。

Had Similar issue when started doing Scala Development using Eclipse, doing a clean build solved the problem.

Guess the Scala tools are not matured et.

天赋异禀 2024-10-18 10:52:47

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

Instead of using log4j directly, you might try using Configgy. It's the Scala Way™ to work with log4j, as well as configuration files. It also plays nicely with SBT and Maven.

淡淡绿茶香 2024-10-18 10:52:47

我自己提出并回答了这个问题,看看:

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

I asked and answered this question myself, have a look:

Put it under src/main/resources/logback.xml. It will be copied to the right location when SBT is doing the artifact assembly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文