作为一个完整的初学者,如何设置Log4j2(在Netbeans中)将某些消息记录到控制台,将其他消息记录到文件中? (我只找到旧版本的指南,因为XML发生变化而让我陷入困境。基本上,我正在更新this thread中的内容,因为我认为这是一个好主意,但缺少一些提示)< / p>
答案 0 :(得分:4)
将“log4j-api-2.8.1.jar”和“log4j-core-2.8.1.jar”添加到您的项目中。 (在NetBeans中:文件 - &gt;项目属性 - &gt;库。我必须将它添加到“编译”和“运行”,否则我会在运行时收到错误。)
告诉Log4j文件在哪里。 (在NetBeans中:文件 - &gt;项目属性 - &gt;运行。粘贴
-Dlog4j.configurationFile=/path/to/your/file/log4j2.xml
进入Textfield“VM-Options”
使用您的配置在指定路径(我在项目的主文件夹中创建)中创建一个名为log4j2.xml的XML,例如:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
<File name="FILE" fileName="logs/myLog.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="FILE" level="INFO"/>
<AppenderRef ref="STDOUT" level="ERROR"/>
</Root>
</Loggers>
</Configuration>
这将创建两个appender,一个ConsoleAppender和一个FileAppender,分别登录System.out和一个名为“myLog.log”的文件。级别INFO和更高级别的日志消息将记录到文件中,只会将错误打印到控制台。
这是一些示例代码,用于演示如何使用Log4j2:
import java.io.IOException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Demo {
private final static Logger log = LogManager.getLogger(Demo.class);
public static void main(String[] args) throws IOException {
log.info("starting...");
try {
((Object) null).toString();
} catch (Exception e) {
log.error("error message");
}
log.info("some info.");
}
}
运行此操作会导致
的控制台输出 error message
文件包含时
2017-03-29 14:37:20,675 INFO l.Demo [main] starting...
2017-03-29 14:37:20,676 ERROR l.Demo [main] error message
2017-03-29 14:37:20,676 INFO l.Demo [main] some info.
我希望这给你带来了一些麻烦,因为我花了很长时间才弄明白这一点。随意编辑这篇文章 - 我不知道我的陈述有多正确,这些只是对我有用的步骤。
答案 1 :(得分:0)
...
private static Logger LOG;
private static void loggerInit() {
//
//System.setProperty("log4j.configurationFile", ".../etc/log4j2.properties");
System.setProperty("log4j.configurationFile", ".../etc/log4j2.xml");
LOG = LogManager.getLogger(Tosser.class);
}
public static void main(String[] args) throws Exception {
//
loggerInit();
//
...
}
...