代码之家  ›  专栏  ›  技术社区  ›  Fang

Log4J2未输出调试信息

  •  1
  • Fang  · 技术社区  · 8 年前

    我已经安装了log4j2并设置了一个属性文件,但我无法将log4j2输出调试信息发送到控制台。我怀疑我的配置是错误的。

    以下是我的源代码:

    package com.smt.trimble.poc;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class NMEAReader {
    
          private static final String hostName = "192.168.0.2";
          private static final int portNumber = 5017;
          private static Socket nmeaSocket;
    
          private static final Logger logger = LogManager.getLogger(NMEAReader.class);
    
    
          public static void main(String[] args) {
    
            try {
    
            nmeaSocket = new Socket(hostName, portNumber);
            logger.debug("Creating socket");
            PrintWriter out = new PrintWriter(nmeaSocket.getOutputStream(), true);
            BufferedReader in = 
              new BufferedReader(new InputStreamReader(nmeaSocket.getInputStream()));
    
            String userInput;
    
            while (true) {
                logger.debug("Reading Data");
                userInput = in.readLine();
                out.println(userInput);
                System.out.println("echo: " + in.readLine());
            }
    
    
        } catch (Exception e){
            System.out.println("An error occured, " + e.getMessage());
        }
    }
    
    }
    

    下面是我的log4j2配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
      <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
          <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
      </Appenders>
      <Loggers>
        <Root level="Debug">
          <AppenderRef ref="Console"/>
        </Root>
      </Loggers>
    

    Log4J2工作正常,因为在设置 logger.debug 到 logger.error 。

    我可能错过了一些琐碎的事情。

    编辑:

    我已将属性文件更新为

    <?xml version="1.0" encoding="UTF-8"?>
        <Configuration status="trace">
          <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
              <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-level %logger{36} - %msg%n"/>
              <Filters>
                <ThresholdFilter level="debug"/>
              </Filters>
            </Console>
          </Appenders>
          <Loggers>
            <Root level="Debug">
              <AppenderRef ref="Console"/>
            </Root>
          </Loggers>
      </Configuration>
    

    将配置级别更改为跟踪也不会产生任何进一步的输出。尽管如此,当我改变 记录器。调试 到 记录器。错误 ,我可以看到log4j2输出:

    enter image description here

    但当我设置日志时什么都没有。调试:

    enter image description here

    2 回复  |  直到 8 年前
        1
  •  5
  •   Vikas Sachdeva    8 年前

    看来你 log4j2 未使用配置文件。如果没有 日志4J2 默认情况下,配置, Root Logger 印刷品 ERROR 级别日志,这就是您的情况。

    你的 日志4J2 配置文件必须放置在直接 classpath 应用程序的名称和文件名必须为 log4j2.xml 。如果是maven项目,您的文件应放置在 /src/main/resources/log42.xml

        2
  •  0
  •   sam    6 年前

    在Loggers标签中,您应该添加一个带有level=“trace”的记录器。Loggers标记中的代码如下所示

        <Loggers>
            <Root level="Debug">
                <AppenderRef ref="Console"/>
            </Root>
            <Logger name="com.smt.trimble.poc" level="trace"></Logger>
        </Loggers>
    

    而且我更喜欢Root level=“info”。它完成了任务。