在IntelliJ IDEA 13中设置Log4J

3
我正在使用IntelliJ IDEA 13构建一个简单的应用程序,但似乎无法弄清楚如何让log4j工作。我的应用程序是一个简单的演示,我制作它只是为了确保我可以构建出一些功能性的东西,它只是将两个随机数相乘,并使用apache tomcat将其放在localhost上,我可以通过浏览器访问它。
以下是类代码:
package Sample;

log4j-api-2.0.jar;
log4j-core-2.0.jar;

import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;


public class HelloWorld {

    public static double getMessage() {
        return Math.random()* Math.random();

     }

    private static Logger log = LogManager.getRootLogger();

    log.debug("Debugging Message");
    log.info("Informational message");
    log.warn("Warning Message");
    System.in.read();

}

我在导入行和jar文件行处收到"需要类或接口"的错误,因此我认为我没有将相应的文件放置在正确的目录中。这也导致从私有静态记录器开始的其他记录行生成错误。

你应该删除那两行带有文件名的代码行,它们是不必要的,很可能导致语法错误。 - Drew Galbraith
1个回答

5

1. 下面的代码不是有效的Java代码:

log4j-api-2.0.jar;
log4j-core-2.0.jar;

你只需要 import 这些代码行,例如:

import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;

2. 必须将 .jar 文件与您的项目相关联。

您可以:

  • 右键单击“外部库”部分并以此方式添加它们,或者...
  • 使用 Maven 并将其添加为项目依赖项,或者...
  • 使用其他依赖项管理和/或构建工具,例如 Ant + Ivy、Gradle 等。

3. 您需要将日志记录语句移动到代码有效的位置,例如方法中:

package sample;

import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;

public class HelloWorld {
    private static final Logger log = LogManager.getRootLogger();

    public static void main(String[] args) {
        log.debug("Debugging Message");
        log.info("Informational message");
        log.warn("Warning Message");
    }    
}

我将文件放在web/web-inf/lib目录中,这是我查找设置log4j的教程中建议的位置。但现在我已经删除了这两行代码,但导入语句仍然出现错误:“未使用的导入”和“无法解析符号apache”。这是否意味着它没有在我放置它们的jar文件中找到它们?IntelliJ不允许我将.jar文件移动到外部目录,只能移动到web-inf文件夹中。 - user3748486
@user3748486 除非您的容器也使用Log4J,否则它们也需要被部署。暂时将它们放在项目的 WEB-INF/lib 中是可以的,但您仍然需要将这些jar包添加到您模块的依赖项中。请注意,您可以通过从命令行或操作系统的文件浏览器等位置移动它们来将它们定位在任何您想要的位置。 - Dave Newton
好的,没问题。谢谢你的帮助! - user3748486
被提名为最愚蠢的负评。我猜我知道它来自哪里。 - Dave Newton
@DaveNewton,我该如何找到.jar的位置?对于已经包含log语句的现有项目而言,它是可以工作的。但是对于新创建的项目,我不知道在哪里导入log4j的.jar。 我正在使用IDEA Gradle。 - XYZ
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接