springboot log4j2日志 配置路径
作者:mmseoamin日期:2024-02-06

一、log4j2 日志由xml配置,如果想改日志路径, 没办法和application.prop 文件读取参数

处理解决办法

二、1、默认解决办法

xml配置死路径,且测试与生产保持一致






    
    
    
        
        
        
        
        
        
    
    
        
            
            
            
            
        
        
        
            
            
            
            
                
                
                
            
            
            
        
        
        
            
            
            
            
                
                
                
            
            
            
        
        
        
            
            
            
            
                
                
                
            
            
            
        
    
    
    
    
        
        
            
        
        
        
        
            
        
        
            

            
            
            
        
    

二、通过系统环境变量读取application.prop属性,提前加载在监听器前,启动应用前加载即可

System.setProperty  用于springboot项目

①在application.properties 或者application.yml文件中配置

patcher.log=/data350/fengqxLogFile/patcher

②配置前置加载方法

在项目/src/main/resources/META-INF/spring.factories

org.springframework.context.ApplicationListener=com.longze.patcher.listener.MyLoggerListener

③增加监听器文件

com.longze.patcher.listener
/**
 * @author Fengqx
 * @version 1.0
 * @description: 日志配置文件加载监听器
 * @date 2023/7/29 19:06
 */
@Component
public class LoggerListener implements ApplicationListener, Ordered {
    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        if (applicationEvent instanceof ApplicationEnvironmentPreparedEvent) {
            ConfigurableEnvironment environment = ((ApplicationEnvironmentPreparedEvent) applicationEvent).getEnvironment();
            String filePath = environment.getProperty("patcher.log");
            if (StringUtils.isNotEmpty(filePath)) {
                System.err.println("=================" + filePath);
                System.setProperty("patcher.log", filePath);
            }
        }
    }
    @Override
    public int getOrder() {
        // 当前监听器的启动顺序需要在日志配置监听器的前面,所以此处减 1
        return LoggingApplicationListener.DEFAULT_ORDER - 1;
    }
}

④在log4jx.xml 使用该路径

 
    
        
        
        
        
        
        
    

三、配置完成,此后可以在启动命令 加上如下命令可以指定日志文件

-Dpatcher.log=/data1/fengqxLogFile/patcher

四、java -nohup 启动命令,会生成nohup文件太大怎么办

将生成文件放到其他路径

启动命令如下

nohup java tianmao.jar -jar `pwd`/*jar > /data1/fengqx/nohup.out &

如果不想生成nohup文件,扔到黑洞中去

nohup java -jar /usr/local/jar/test.jar > /dev/null 2>&1 &