log4j动态加载(不重启服务器)

项目中希望可以不重启服务器的情况下,给新进的任务生成单独的日志文件。搜了很多资料,在我的电脑上一直不能用,还好我没放弃,找到了一个可行的方法,这里分享给大家。


首先说下给单独的任务分配独立的日志文件,看这一段代码,这是log4j.xml配置文件



    
        
            
                
            
            
            
                
            
        
        
            
                
            
            
            
                
            
        
        
            
                
            
            
            
                
            
        
        
         
         
          
         
            
                
            
            
            
                
        
         
         
    
    

	  
   	 	  
    	  
	 
        
        
            
      		
		    
        
     


里面的 
 

  
         
            
                
            
            
            
                
        
         

  
   	 	  
    	  
	 


是我配置的,里面有新日志文件的位置和名字信息,使用的时候


	private static Log log = LogFactory.getLog("test9");
使用配置的名字获得log对象即可,打印的log就在你配置的目录里面。

现在再来说动态加载

// 动态加载log4j2.xml文件
			LoggerContext logContext = (LoggerContext) LogManager.getContext(false);
			String path = AddNewJob.class.getResource("/log4j2.xml").getPath();
			File conFile = new File(path);
			logContext.setConfigLocation(conFile.toURI());
			logContext.reconfigure();
主要就是 logContext.reconfigure()方法,这段代码执行后,你的项目会根据现在的log4j.xml配置,再生成一遍日志打印的文件路径信息。

你可以先启动项目,然后调用线程的sleep方法,在sleep的过程中,改变log4j.xml文件的内容,当休眠时间过去后你就能看到新生成的文件夹和你打印在log文件中的内容了。

你可能感兴趣的:(log4j动态加载(不重启服务器))