【发布时间】:2017-08-22 23:42:13
【问题描述】:
作为一个完整的初学者,我如何设置 Log4j2(在 Netbeans 中)以将一些消息记录到控制台并将其他消息记录到文件中? (我只找到了旧版本的指南,这给我带来了麻烦,因为 XML 发生了变化。基本上,我正在更新 this thread 中所做的事情,因为我认为这是个好主意,但缺少一些提示)
【问题讨论】:
作为一个完整的初学者,我如何设置 Log4j2(在 Netbeans 中)以将一些消息记录到控制台并将其他消息记录到文件中? (我只找到了旧版本的指南,这给我带来了麻烦,因为 XML 发生了变化。基本上,我正在更新 this thread 中所做的事情,因为我认为这是个好主意,但缺少一些提示)
【问题讨论】:
...
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();
//
...
}
...
【讨论】:
将“log4j-api-2.8.1.jar”和“log4j-core-2.8.1.jar”添加到您的项目中。 (在 NetBeans 中:文件 -> 项目属性 -> 库。我必须将它添加到“编译”和“运行”中,否则我会在运行时出错。)
告诉 Log4j 文件在哪里。 (在 NetBeans 中:文件 -> 项目属性 -> 运行。粘贴
-Dlog4j.configurationFile=/path/to/your/file/log4j2.xml
进入文本字段“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>
这将创建两个附加程序,一个 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.
我希望这为您省去了一些麻烦,因为我花了很长时间才弄清楚这一点。随意编辑这篇文章 - 我不知道我的陈述有多正确,这些只是对我有用的步骤。
【讨论】: