在 NetBeans 中设置 Log4j2,基本配置

T. *_*ein 0 java netbeans log4j2

作为一个完整的初学者,我如何设置 Log4j2(在 Netbeans 中)以将一些消息记录到控制台,而将其他消息记录到文件中?(我只找到了旧版本的指南,这让我遇到了麻烦,因为 XML 发生了变化。基本上,我正在更新此线程中所做的工作,因为我认为这是一个好主意,但缺少一些提示)

T. *_*ein 6

  1. 您将需要下载此二进制文件存档

  2. 将“log4j-api-2.8.1.jar”和“log4j-core-2.8.1.jar”添加到您的项目中。(在 NetBeans 中:文件 -> 项目属性 -> 库。我必须将它添加到“编译”和“运行”中,否则我会在运行时出错。)

  3. 告诉 Log4j 文件在哪里。(在 NetBeans 中:文件 -> 项目属性 -> 运行。粘贴

    -Dlog4j.configurationFile=/path/to/your/file/log4j2.xml 
    
    Run Code Online (Sandbox Code Playgroud)

进入文本字段“VM-Options”

  1. 使用您的配置在指定路径(我在项目的主文件夹中创建)创建一个名为 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>
    
    Run Code Online (Sandbox Code Playgroud)

    这将创建两个 appender,一个 ConsoleAppender 和一个 FileAppender,它们分别登录 System.out 和一个名为“myLog.log”的文件。级别 INFO 和更高级别的日志消息会记录到文件中,只有错误会打印到控制台。

  2. 这是一些示例代码,用于演示如何使用 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.");
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

运行它会导致控制台输出

    error message
Run Code Online (Sandbox Code Playgroud)

虽然文件包含

    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.
Run Code Online (Sandbox Code Playgroud)

我希望这可以为您省去一些麻烦,因为我花了很长时间才弄明白。随意编辑这篇文章 - 我不知道我的陈述有多正确,这些只是对我有用的步骤。