在NetBeans中设置Log4j2,基本配置

时间:2017-03-29 13:01:13

标签: java netbeans log4j2

作为一个完整的初学者,如何设置Log4j2(在Netbeans中)将某些消息记录到控制台,将其他消息记录到文件中? (我只找到旧版本的指南,因为XML发生变化而让我陷入困境。基本上,我正在更新this thread中的内容,因为我认为这是一个好主意,但缺少一些提示)< / p>

2 个答案:

答案 0 :(得分:4)

  1. 您需要下载this archive of binaries

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

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

    -Dlog4j.configurationFile=/path/to/your/file/log4j2.xml 
    
  4. 进入Textfield“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>
      

      这将创建两个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.");
          }
      }
      
    3. 运行此操作会导致

      的控制台输出
          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();
    //
    ...
  }
...