Java日志框架log4j控制台输出相同日志多条

新手上路,请多包涵

使用log4j,没有使用log4j.properties配置文件,直接使用的BasicConfigurator.configure();但是控制台打印的日志信息会每运行一次代码就会相同的日志增加一条

0 [http-nio-8080-exec-1] ERROR com.zd.log.servlet.Test - error
--------test------
1591 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
1591 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
--------test------
1593 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
1771 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
1781 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
--------test------

相关代码

@WebServlet("/test")  
public class Test extends HttpServlet {  
    @Override  
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
        Logger log = Logger.getLogger(Test.class);  
        BasicConfigurator.configure();  
  
        log.setLevel(Level.DEBUG);  
        log.error("error");  
        log.warn("warn");  
        log.info("info");  
        log.debug("debug");  
  
        System.out.println("--------test------");  
    }  
}

预期结构应该是下面一样,使用log4j.properties配置文件就是跟下面一样

0 [http-nio-8080-exec-1] ERROR com.zd.log.servlet.Test - error
--------test------
1591 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error~~~~
--------test------
1593 [http-nio-8080-exec-2] ERROR com.zd.log.servlet.Test - error
--------test------

阅读 2.3k
1 个回答
新手上路,请多包涵

发现原因是BasicConfigurator.configure();执行了多次,如果此代码只执行一次,那么就不会产生哪种情况,值于具体原因还请大佬解释

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题