一、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 &